zoukankan      html  css  js  c++  java
  • MySQL分组操作

    MySQL分组操作

    返回首页

    分组(group by)语法:

    create table department (id int auto_increment primary key,

                title varchar(32),

                 )engine = innodb default charset=utf8;

    insert into department(title) values("运营"),("财务"),("公关")

      

    create table userinfo (id int auto_increment primary key,

               name varchar(32),

               part_id int,

               constraint fk_user_part foreign key (part_id) references department (id)

              ) engine = innodb default charset=utf8;

    insert into userinfo (name,part_id) values("wang",2),("george",3),("fat",1),("cool",3)

    如何将用户George和cool放在一个组,因为George和cool都是部门3中的。

    用group by方法,group by的意思是根据哪一列数据分组,根据的参数,放在group by 后面。

    语法:select * from userinfo group by part_id;

    样例:

    select count(id),max(id),part_id from userinfo group by part_id;   # 显示都有哪些组,每组都有多少人。

    max(id)的意思是在分组后,谁的id大,就取谁显示。

    count(id)的意思是统计分组后,改组的人数,并显示。用于统计部门人数。

    count 计数,意思是统计数量,
    max 取值大的,谁大取谁。
    min  取值小的,谁小取谁。
    sum 求和。
    avg  求平均值。

    如果对于聚合函数结果进行二次筛选时?必须使用having ****

    select count(id),part_id from userinfo group by part_id having count(id) > 1;

    # 统计userinfo的表的pait_id相同组的成员个数,并进行二次筛选,成员数量大于1的。

    select count(id),part_id from userinfo where id > 0 group by part_id having count(id) > 1;

    # 用where进行二次筛选,不用有聚合函数,也就是这种方法不推荐。

    ------- END -------

  • 相关阅读:
    数论练习
    AC自动机*
    矩阵乘法*
    概率期望*
    组合数学练习*
    图论升级*
    【终端使用】"su"命令切换用户
    【终端使用】"which"命令可以查看执行命令所在的位置
    【终端使用】"usermod"命令 和 组(包括:主组、附加组)
    Ubuntu 18.04安装 MySQL 8.0+版本的数据库
  • 原文地址:https://www.cnblogs.com/george92/p/7309779.html
Copyright © 2011-2022 走看看