多行處理函數又叫分組函數:
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值。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。