分組查詢語法
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;