MySQL 分組查詢-GROUP BY


分組查詢語法
select 分組函數,列
from 表名
【where】 篩選條件 -- where的位置可以放在group by的前面或者后面,兩者有不同含義
group by 分組的列表
【having】篩選條件
【order by】 --如果使用到排序,order by語句基本在最后

where的使用特點:1,
數據源 位置 關鍵字
分組前篩選 來源於‘from’表中 group by前 where
分組后篩選 來源於分組函數計算過結果集 group by后 having

2,group by 子句支持單個字段,多個字段(字段之間用,隔開),表達式或者函數

SELECT MAX(salary),job_id
FROM employees
GROUP BY job_id;

SELECT COUNT(*),location_id
FROM departments
GROUP BY location_id;

添加篩選條件

SELECT AVG(salary),department_id
FROM employees
WHERE email LIKE '%a%'
GROUP BY department_id;

SELECT MAX(salary),manager_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY manager_id;

添加復雜的篩選條件

SELECT COUNT(*),department_id
FROM employees
GROUP BY department_id;

SELECT job_id,MAX(salary),commission_pct
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary)>12000;

按表達式或函數分組

SELECT COUNT(),LENGTH(last_name) len_name
FROM employees
GROUP BY LENGTH(last_name)
HAVING COUNT(
)>5;

按多個字段分組

SELECT AVG(salary),job_id,department_id
FROM employees
GROUP BY job_id,department_id;

添加排序

SELECT AVG(salary),job_id,department_id
FROM employees
GROUP BY job_id,department_id
ORDER BY AVG(salary) DESC;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM