美文网首页
mysql数据库group by和having的使用

mysql数据库group by和having的使用

作者: python小哥哥2020 | 来源:发表于2020-06-06 19:33 被阅读0次

    大家好,我是天空之城,今天给大家带来mysql数据库group by和having的使用。
    group by表示按一定规则对数据进行分组,比如公司想知道每个部门男女员工的人数,班主任想统计各科第一名的成绩。必须配合聚合函数进行使用,如count,sum,avg,max,min,对一列或多列进行分组。
    建表链接https://blog.csdn.net/littlespider889/article/details/106560626

    #group by语法
    SELECT column_ name, aggregate function(column name)
    FROM table name
    GROUP BY column name
    
    在SQL中增加HAVING子句原因是, WHERE关键字无法与聚合函数一起使用(where对分组前数据进行过滤)。HAVING 子句可以对分组后的各组数据进行筛选。
    #having语法
    SELECT column_ name, aggregate_ function(column_ name)
    FROM table_ name
    WHERE column name operator value
    GROUP BY column name
    HAVING aggregate function(column_ name) operator value
    
    还是用employee表进行练习
    select sex, count(*) from employee group by sex;
    显示男员工8人,女员工5人
    男 8
    女 5
    
    
    按照部门进行人员统计
    select dept, count(*) from employee group by dept;
    部门A 5
    部门C 3
    部门B 5
    
    统计各个部门的工资总和
    select dept, sum(salary) from employee group by dept;
    统计各个部门的工资最高的
    select dept, max(salary) from employee group by dept;
    部门A  8500
    部门C  10000
    部门B   12000
    
    统计各个部门的工资最低的
    select dept, min(salary) from employee group by dept;
    部门A  4200
    部门C  4500
    部门B   3500
    select后面除了分组字段外只能说聚合函数
    
    having用法
    找出部门人数小于5个的那个部门
    select dept, count(*) from employee group by dept having count(*)<5;
    部门C  3
    
    找出部门最高薪资过万的那个部门
    select dept, max(salary) from employee group by dept having max(salary)>10000;
    部门B   12000
    
    

    相关文章

      网友评论

          本文标题:mysql数据库group by和having的使用

          本文链接:https://www.haomeiwen.com/subject/cbrftktx.html