MySQL進階5--分組函數 / 分組排序和分組查詢 group by(having) /order by


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;

 


免責聲明!

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



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