mysql學習-mysql聚合函數和分組統計


一、聚合函數

  聚合函數。稱為統計函數

  常用的聚合函數

  count()總量數

  max()最大值

  min()最小值

  sum()和

  avg()平均值

  例:查詢部門30的總人數(查詢總人數,根據empno編號確定有多少編號,就有多個人)

  select count(empno)from emp where deptno=30; count()括號是統計總數量,必須要傳的

    ⚠️聚合函數在統計時會忽略null值。

    

  select sum(sal)where emp where deptno=10;

  select avg(sal) where emp where deptno=10;

 

  例:查詢部門30的最高工資、最低工資、平均工資

  select max(sal),min(sal),avg(sal)from emp where deptno = 30;

 

二、分組統計

  語法:

    select 列名1 別名1,列名2 別名2...

    from 表名1 別名1 inner join 表名2 別名2 on 多表間的關聯關系

    where 條件(分組之前的條件)

    group by 分組列

    having (分組之后的條件)

    order by 排序1 asc|desc,排列2 asc|desc....;

 

  舉例:

    查詢每個部門的平均工資

    select deptno,avg(sal)

    from emp

    group by deptno;

 

    select  dname ,avg(sal)

    from emp e,dept d

    where e.empno  = d.depno

    group by d.dname

    ⚠️:在mysql中分組統計時可以查出分組列的其他列,而在orcal中不行

      建議將要查詢出的列使用分組列

 

    查詢出部門的名稱以及每個部門的員工數量

    select d.dname,count(e.empno)

    from dept d left join emp e on d.deptno = e.deptno

    group by d.dname

 

    查詢平均工資大於2000的部門的編號或者平均工資

    select deptno , avg(sal)from emp group by deptno having avg(sal)>2000;

 

    查詢出非銷售人員的職位名稱,以及從事同一工作的雇員的月工資綜合,並且滿足工資綜合大於5000,查詢結構按照月工資綜合生序排序

     解題思路:

          1、先寫出整體的關鍵字出來

          2、思考需要查詢幾張表,把可能查詢的表下載from 后。  只查詢emp表

          3、考慮有沒有分組之前的條件, 非銷售人員的職位。 job!=‘salesman’

          4、思考需要按照什么分組。  按照job分組

          5、思考分組后的條件。 滿足工資綜合大於5000.  sum(sal)>5000

          6、升序排序

    select job ,sum(sal) sum

    from emp

    where job!='salesman'

    group by job

    having sum(sal)>5000

    order by  sum

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM