MySQL進階--分組排序和分組查詢 group by(having) /order by
/* 介紹分組函數 功能:用做統計使用,又稱為聚合函數或組函數 1.分類: sum, avg 求和 /平均數, 只處理數值型,都絕對忽略NULL值(avg處理時統計的個數沒有null項) max ,min ,可以求字符串最大最小 ,可以匹配日期,都絕對忽略NULL值 count ,不計算NULL ,不把null算進數里 #2. 參數支持類型 SELECT MIN(last_name) ,MAX(last_name) FROM employees; #Abel Zlotkey SELECT MIN(hiredate),MAX(hiredate) FROM employees; # 3. 都可以和distinct 搭配 4. count 函數的詳細介紹 count(*) ; //統計全部行數 count(常量) ;//統計全部行數 -------------------------- 介紹分組查詢 group by 語法: select 分組函數(max/min/count 之類搭配) ,列名 (可以省略,對應group by后的) from 表 [where 篩選條件] --分組前進行篩選 group by 分組的列表 [子句: having 篩選條件] -- 分組后進行篩選,約束分組函數:max/min/count 之類 [order by 子句] -- 分組后進行排序,可以排序分組函數 注意: 查詢列表必須特殊,要求使分組函數和group by后出現的字段 */ USE myemployees; #案例1,查詢大於兩個人的所有部門,輸出個數 SELECT COUNT(*),department_id FROM employees GROUP BY department_id HAVING COUNT(*)>2; #案例2. 查詢每個工種 有獎金的員工的最高工資且12000的工種編號和 最高工資 SELECT job_id,MAX(salary) FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id HAVING MAX(salary)>12000; #案例3: 添加排序 #查詢每個部門的每個工種的員工的平均工資>10000 ,並且按平均工資的高低顯示 SELECT AVG(salary),department_id #AVG(salary) a, 設置為別名更簡單 FROM employees WHERE department_id IS NOT NULL GROUP BY job_id,department_id HAVING AVG(salary) > 10000 ORDER BY AVG(salary) DESC;