1. 程式人生 > 其它 >008、分組函式、聚合函式、多行處理函式

008、分組函式、聚合函式、多行處理函式

分組函式、聚合函式、多行處理函式

注意: 分組函式自動忽略空值,不需要手動的加 where 條件排除空值。   select count(*) from emp where xxx; 符合條件的所有記錄總數。   select count(comm) from emp; comm 這個欄位中不為空的元素總數。 注意:分組函式不能直接使用在 where 關鍵字後面。
# ---------------------------------8、分組函式/聚合函式/多行處理函式-------------------
# 取得所有的員工數
select count(*) from
emp; # 取得津貼不為 null 員工數 # 採用 count(欄位名稱),不會取得為 null 的記錄 select count(comm) from emp; select count(*) from emp where comm is not null; # 取得工作崗位的個數 # distinct 去掉重複的項 select count(distinct job) from emp; # 取得薪水的合計 select sum(sal) from emp; # 取得津貼的合計 select sum(comm) from emp; # 取得薪水的合計(sal+comm) #
comm 欄位有 null 值,所以無法計算,sum 會忽略掉,正確的做法是將 comm 欄位轉換成 0 。如果為NULL 轉換成0 。 select sum(sal+IFNULL(comm, 0)) from emp; # 取得某一列的平均值 # 取得平均薪水 select avg(sal) from emp; # 取得最高薪水 select max(sal) from emp; # 取得最低薪水 select min(sal) from emp; # 取得最晚入職得員工 select max(str_to_date(hiredate, '%Y-%m-%d')) from emp; select ename,hiredate
from emp order by hiredate desc limit 1; # 取得最早入職得員工 select min(str_to_date(hiredate, '%Y-%m-%d')) from emp; select ename,hiredate from emp order by hiredate asc limit 1; # 取得入職時間前3的員工 select ename,hiredate from emp order by hiredate asc limit 3; # 可以將這些聚合函式都放到 select 中一起使用 select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp;