SQL Group By分組的使用
阿新 • • 發佈:2019-01-25
分組計算函式:相對於單行函式,也可稱之為多行函式,它的輸入是多個行構成得一個行集(這個行集可以是一 張表的所有行,也可以是按照某個維度進行分組後的某一組行),而輸出都是一個值;
比如我們常見的一些分組計算需求:求某個部門的薪資總和,薪資平均值,薪資最大值等等。
分組函式一般包括:
max(最大值),min(最小值),avg(平均值),count(統計數量),sum(求和),stddev(標準差),variance(方差)
函式 | 作用 | 函式 | 作用 |
---|---|---|---|
max | 最大值 | min | 最小值 |
sum | 求和 | count | 統計數量 |
stddev | 標準差 | variance | 方差 |
avg | 平均值 |
備註:min,max可用於任何資料型別,但avg,sum,stddev,variance 僅適用於數值型欄位。count(expr)不可統計空行,但是count(*)可以統計所有的行。
1、當分組計算函式與一些普通的欄位名,如部門號(department_id)都要被選擇時,就需要使用到group by函式,而且對於每個普通欄位都要用group by進行分組,不然執行時會報錯(ORA-00979:不是GROUP BY表示式)。
2、當需要用到條件限定(where)時,要把group by放在條件限定的後面去,不然會提示SQL命令未正確結束。
3、當使用的條件限定中需要用到分組計算函式時,要使用HAVING欄位進行,不能使用WHERE。
SELECT department_id,
job_id,
AVG(salary)
FROM employees
WHERE department_id > 50
GROUP BY department_id,
job_id
HAVING AVG(salary) > 8000;