數據庫聚合函數

聚合函數

  • 語法
  • 聚合函數會自動忽略空值,省去手動寫sql將空值null排除
  • 聚合函數不能直接加載where語句後面

sum()計算總和

獲取薪水sal的總和

select sum(sal) from emp;

獲取薪水和補助的總和(補助含有null)

錯誤寫法

原因:優先級不一樣,首先sql會先把括號裏面的計算,所有就存在sal+comm = null,而當括號裏面的每一個都計算完畢,就會存在一個或者多個null的值,且聚合函數又會將null忽略,所以就會出錯

select sum(sal+comm) from emp;

正確寫法

將comm用ifnull()函數處理一下

select sum(sal+ifnull(comm,0)) from emp;

avg() 平均值

獲取薪水的平均值

select avg(sal) as avgSal from emp;

max()最大值(同時也可以計算出日期date的最大值)

獲取最高薪水

select max(sal) as maxSal from emp;

獲取最大日期

select max(date) as maxDate from emp;

錯誤:獲取最高薪水的員工

原因:聚合函數只用來比較,統計,計算,並不會定位到某一條數據,如果有多個相同的數據就會不對應

所以:在使用聚合函數不建議這樣寫。

select ename,max(sal) from emp;

min()取最小值

獲取最低薪水

select min(sal) as minSal from emp;

count()獲取的總數

獲取員工的總數

//建議使用id,不使用“*”,不使用“*”,上篇文章已說明
select count(id) as userCount from emp;

一、假設一共有14人,4人有補助
1.獲取有補助comm的人數

select count(comm) from emp;

2.獲取沒有補助的人數(聚合函數只能統計不爲null的,那麼如何統計補助爲null的呢?)

思路:在獲取的時候添加限制條件,統計出滿足comm == null的數據,然後將統計出來的次數放入count()中

select coumt(comm) from emp where comm is null;

組合計算函數

  • sum、avg、max、min、count這些函數可以一起使用
select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章