SQL显示最多2名员工雇用了每个部门2021年的最新员工
SQL Server数据库有2个表:
-
Department
:ID -
员工
:ID,部门,Employee_name,date_hired
我想显示最多2名员工雇用了最新的2021年,每个部门
我有这个SQL:
SELECT e.*
FROM Employee e
WHERE e.Date_Hired IN (SELECT e.Date_Hired
FROM Employee e
WHERE YEAR(e.Date_Hired) = 2021)
ORDER BY e.Date_Hired DESC
但是它正在显示部门1中的所有3个项目
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您的关系有整数排名
描述每个员工在部门中的职位,
然后,一个简单的条款可以轻松地要求最高的K员工。
因此,您正在寻找
等级
查询函数://learn.microsoft.com/en-us/sql/t-sql/functions/rank-transact-sql?view=sql-sql-server-ver16 。
也许比您的单位测试和未来维护者更微妙
会考虑考虑。
If your relation had integer rank numbers
describing each employee's position within a department,
then a simple WHERE clause could easily request the top K employees.
So you are looking for the
rank
query function:https://learn.microsoft.com/en-us/sql/t-sql/functions/rank-transact-sql?view=sql-server-ver16
The relationship among RANK, DENSE_RANK, and ROW_NUMBER is
perhaps more subtle than your unit tests and future maintainers
would care to consider.