視頻學習鏈接https://www.bilibili.com/video/av59623481/?p=63
語法:
select 分組函數(計算字段), 分組字段
from 表
[where 條件篩選]
group by 分組的字段
[order by 子句]
特點:
1、可以按單個字段分組
2、和分組函數一同查詢的字段最好是分組後的字段
3、分組篩選
針對的表 位置 關鍵字
分組前篩選: 原始表 group by的前面 where
分組後篩選: 分組後的結果集 group by的後面 having
4、可以按多個字段分組,字段之間用逗號隔開
5、可以支持排序
6、group by和having可以支持別名
例:
1. 查詢每個工種的最高工資:SELECT MAX(salary), job_id FROM employees GROUP BY job_id;
2. (分組後的篩選)查詢哪個部門的員工個數大於2:
1. SELECT COUNT(*), department_id FROM employees GROUP BY department_id HAVING COUNT(*)>2;
3. (分組前篩選)查詢每個工種有獎金的員工的工種的最高工資和工種編號:
1. SELECT MAX(salary), job_id FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id;
4. (分組前於分組後結合篩選)查詢每個工種有獎金的員工的最高工資大於12000的工種編號和最高工資:
1. SELECT MAX(salary), job_id FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id HAVING MAX(salary) > 12000;
5. (按多個字段分組)查詢每個部門每個工種的員工的平均工資:
1. SELECT AVG(salary), department_id, job_id FROM employees GROUP BY department_id, job_id;
6. (分組後排序)查詢每個部門每個工種的員工的平均工資,並且按平均工資高低排序:
1. SELECT AVG(salary), department_id, job_id FROM employees GROUP BY department_id, job_id ORDER BY AVG(salary) DESC;