首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL GROUP BY 與 HAVING 子句實戰範例:查詢薪資 ≥ 2000 且人數 > 1 的部門

     編輯:關於SqlServer

表結構 DEPARTMENT

DEPARTMENT 表結構

需求

找出「薪資不低於 2000 的員工人數超過 1 人」的部門編號。

SQL 語句

SELECT DEPARTMENT_ID, COUNT(SALARY) AS emp_cnt
FROM DEPARTMENT
WHERE SALARY > 2000
GROUP BY DEPARTMENT_ID
HAVING COUNT(SALARY) > 1;

關鍵點解析

子句執行階段作用對象可用彙總函數
WHERE分組前明細列否
HAVING分組後群組是
  • WHERE SALARY > 2000 先過濾掉薪資 < 2000 的列。
  • GROUP BY DEPARTMENT_ID 依部門分組。
  • HAVING COUNT(SALARY) > 1 保留群組計數 > 1 的部門。

延伸練習

-- 顯示部門名、符合條件人數、最高薪資
SELECT d.DEPARTMENT_NAME, COUNT(e.SALARY) AS cnt, MAX(e.SALARY) AS max_sal
FROM EMPLOYEES e
JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID
WHERE e.SALARY >= 2000
GROUP BY d.DEPARTMENT_NAME
HAVING COUNT(e.SALARY) > 1
ORDER BY cnt DESC;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved