SQL Server 資料庫有 2 個表:
Department: IDEmployee: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 個專案。
提前致謝!
uj5u.com熱心網友回復:
SELECT e.*
FROM Employee e,
(SELECT id,
Date_Hired,
row_number() OVER(PARTITION BY Department ORDER BY id DESC) AS rn
FROM Employee e
WHERE YEAR (e.Date_Hired) = 2021) sub
WHERE rn <= 2
and e.id = sub.id
ORDER by e.Date_Hired DESC
uj5u.com熱心網友回復:
如果您的關系具有描述每個員工在部門內職位的整數等級數字,那么一個簡單的 WHERE 子句可以輕松請求前 K 名員工。
您正在尋找rank查詢功能:
https ://docs.microsoft.com/en-us/sql/t-sql/functions/rank-transact-sql?view=sql-server-ver16
RANK、DENSE_RANK 和 ROW_NUMBER 之間的關系可能比您的單元測驗和未來的維護者愿意考慮的更為微妙。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494088.html
上一篇:如果不存在則求和內部連接??=0
