我有兩個表:
EMPLOYEE: ID|DEPARTMENT_ID|CHIEF_ID|NAME|SALARY
DEPARTMENT: ID|NAME
這里的任務是獲取所有員工最高工資總額的部門串列。
我正在嘗試使用的查詢(完成但沒有結果):
SELECT s.DEPARTMENT_ID, s.SALARY_SUM
FROM (SELECT DEPARTMENT_ID, SUM(SALARY) SALARY_SUM, w.ID
FROM EMPLOYEE e
JOIN DEPARTMENT w ON w.ID = e.DEPARTMENT_ID
GROUP BY e.DEPARTMENT_ID, w.ID) s
WHERE s.SALARY_SUM = (SELECT MAX(SALARY) MaxSum
FROM EMPLOYEE w1
WHERE w1.ID = s.ID)
uj5u.com熱心網友回復:
這將使您獲得所有員工總和最高的 Deoatnent
CREATE tABLe EMPLOYEE(DEPARTMENT_ID INT, SALARY INT) GO
CREATE TABLe DEPARTMENT(ID int) GO
WITH CTE as (SELECT DEPARTMENT_ID, SUM(SALARY) SALARY_SUM, w.ID FROM EMPLOYEE e JOIN DEPARTMENT w ON w.ID = e.DEPARTMENT_ID GROUP BY e.DEPARTMENT_ID, w.ID) SELECT s.DEPARTMENT_ID, s.SALARY_SUM FROM CTE s WHERE s.SALARY_SUM = (SELECT MAX(SALARY_SUM) MaxSum FROM CTE w1 ) GO部門_ID | SALARY_SUM ------------: | ---------:
db<>在這里擺弄
uj5u.com熱心網友回復:
您在這里基本上有 4 個資料集。
- 員工
- 部門 w
- 子查詢
- 子查詢 2(where 子句)
資料集 3 具有按部門 ID 聚合的工資。資料集 4 中每個部門的員工工資最高。
Where 子句表示比較 3 到 4,其中 SALARY_SUM = MaxSum。因為 SALARY_SUM 是按部門 ID 聚合的,MaxSum 是最大的個人工資,所以這個 where 子句只會回傳有 1 個人(或工資為 0 美元)的部門的結果。
如果一個部門有多人有薪水,則該部門的薪水總和將始終大于該部門中最大的個人薪水。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349932.html
標籤:sql 和 最大限度 sql-server-2019
