武汉茑萝吧 关注:8贴子:1,253
  • 2回复贴,共1

武汉茑萝:Mysql group by 用法解析

只看楼主收藏回复

group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。SELECT子句中的列名必须为分组列或列函数,列函数对于GROUP BY子句定义的每个组各返回一个结果。
有如下表结构和数据:


1楼2022-08-08 09:48回复
    例如我想列出每个部门最高薪水的结果,sql语句如下:
    SELECT DEPT, MAX(SALARY) AS MAXIMUMFROM STAFFGROUP BY DEPT
    查询结果如下:
    DEPT MAXIMUM开发部 2500设计部 2600销售部 3500
    解释一下这个结果:
    1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
    2、“列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
    注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。


    2楼2022-08-08 09:49
    回复
      2025-08-23 19:56:41
      广告
      不感兴趣
      开通SVIP免广告
      查询结果如下:
      DEPT EDLEVEL MAXIMUM设计部 4 2300设计部 5 2600销售部 5 3000销售部 7 3500
      注意:在SELECT语句中指定的每个列名都要在GROUP BY子句中有定义,否则将会产生错误。
      GROUP BY子句对DEPT和EDLEVEL的每个唯一组合各返回一行。
      在GROUP BY子句之后使用HAVING子句。
      可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY子句后面包含一个HAVING子句。
      HAVING子句可包含一个或多个用AND和OR连接的谓词。每个谓词将组特性(如AVG(SALARY))与下列之一进行比较。


      4楼2022-08-08 09:49
      回复