You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何统计SQL标量值函数筛选出的10年工龄以上员工总数

计算工龄超过10年的员工总数的解决方案

方法1:利用现有标量函数统计

你可以直接调用已有的SalarieAnciennetePlus10函数,筛选出返回值为1的员工后统计总数:

-- 把2021替换成你需要的目标日历年
SELECT COUNT(*) AS 符合条件员工总数
FROM Salarie
WHERE dbo.SalarieAnciennetePlus10(IdSalarie, 2021) = 1;

也可以用SUM把bit类型的返回值转成整数后求和,结果完全一致:

SELECT SUM(CAST(dbo.SalarieAnciennetePlus10(IdSalarie, 2021) AS INT)) AS 符合条件员工总数
FROM Salarie;

方法2:直接查询(效率更高)

标量函数在数据量较大时可能拖慢查询速度,你可以直接复用函数里的逻辑写查询,跳过函数调用:

-- 把2021替换成你需要的目标日历年
SELECT COUNT(*) AS 符合条件员工总数
FROM Salarie
WHERE DATEDIFF(yy, DateEntree, DATEFROMPARTS(2021, 1, 1)) > 10;

这个语句和你的标量函数逻辑完全一致:计算员工入职日期到目标年1月1日的年份差,筛选出差值大于10的员工后统计总数。

额外说明

DATEDIFF(yy, ...)是按年份跨度算工龄,比如2010年12月31日入职的员工,2021年1月1日计算时年份差为11,会被判定为符合条件。如果需要精确到满10整年年数(比如入职日期早于目标年-10的1月1日),可以把条件改成:

WHERE DateEntree <= DATEFROMPARTS(2021 - 10, 1, 1)

内容的提问来源于stack exchange,提问作者ltvm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:50:27