多行處理函數又叫分組函數:
1、count:計數
2、sum:求和
3、avg:平均值
4、max:最大值
5、min:最小值
多行處理函數的特點:
1)輸入多行,最終輸出的結果為1行。
2)分組函數自動忽略null
現在有員工表信息如下:
員工表
select count(comm) from emp; //結果:4
可以看出一共有14行記錄,但是count(comm)的時候結果等於4,說明count函數自動過濾掉為null的comm字段。
3)有null參數的數學運算結果一定為null
還是上面員工表的信息,我們查詢每個員工的年薪,年薪=(工資+補貼)* 12 也就是:
(sal + comm) 12;
select ename , (sal + comm) * 12 as yealsal from emp; 
員工年薪
從結果中我們可以看到,只要別貼comm為null的,查詢出來的年薪也是等於null,這也就說明了只要有null參與的數學運算,結果一定為null。
這個時候我們就需要一個單行處理函數來解決這樣的問題:ifnull(‘為null的字段’ , ‘為null的時候當做什麼來處理’),所以sql語句可以改成如下:
select ename , (sal + ifnull(comm,0)) * 12 as yealsal from emp; 
員工年薪
最後我們再來看一個需求來證明:分組函數自動忽略null
計算所有員工的別貼comm總和:select sum(comm) from emp;
在comm別貼字段中,含有為null的值,所有查詢的結果應該為null,我們執行並查看結果:
員工補貼總和
我們發現結果並不是null,而是自動將為null的值過濾掉了,所以我們再次證明了分組函數會自動過濾null值。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/258753.html
微信掃一掃
支付寶掃一掃