1. 程式人生 > >SQL Group By分組的使用

SQL Group By分組的使用

分組計算函式:相對於單行函式,也可稱之為多行函式,它的輸入是多個行構成得一個行集(這個行集可以是一 張表的所有行,也可以是按照某個維度進行分組後的某一組行),而輸出都是一個值;
比如我們常見的一些分組計算需求:求某個部門的薪資總和,薪資平均值,薪資最大值等等。
分組函式一般包括:

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;