我需要在Microsoft服务器SQL / T-SQL中找到具有15至20年且超过20年的工作经验的员工的总销售额。
我有一个看起来像这样的数据集:
Hiredate EmployeeID Sales
0 1986-01-02 90 20,000
1 1989-02-30 80 10,000
2 2000-01-20 91 50,000
3 2009-05-07 92 60,000
4 2007-07-06 47 30,000
5 1999-01-24 66 44,000
6 2005-09-22 21 30,000
到目前为止,我所做的是:
SELECT SUM(EmployeeID)
FROM (
SELECT DATEDIFF(year,Hiredate, GETDATE()), COUNT(EmployeeID)
FROM abc.table
WHERE DATEDIFF(year, Hiredate, GETDATE()) > 20
GROUP BY DATEDIFF(year,Hiredate, GETDATE())
)
这部分给了我日期上的差异,以及员工的数量,但是我在如何分隔团队然后求和销售额上感到困惑。
SELECT DATEDIFF(year,Hiredate, GETDATE()), COUNT(EmployeeID)
FROM abc.table
WHERE DATEDIFF(year, Hiredate, GETDATE()) > 20
GROUP BY DATEDIFF(year,Hiredate, GETDATE())
谢谢
不要使用datediff()-它不会达到您的期望。它计算两个日期之间的“边界”数。对于年份,即12月31日至1月1日之间的午夜。
另外,在列上应用函数通常会使创建最佳执行计划变得更加困难。
您似乎想要:
SELECT SUM(SALES)
FROM abc
WHERE HireDate >= DATEADD(year, -20, GETDATE()) AND
HireDate < DATEADD(year, -14 GETDATE());
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。