聚合函數
- 語法
- 聚合函數會自動忽略空值,省去手動寫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;