• (转载)MySQL关键字GROUP BY的使用


    例子:

    mysql> select * from employee;
    +------+------+-------+------+-------+----------+
    | num  | d_id | name  | age  | sex   | homeaddr |
    +------+------+-------+------+-------+----------+
    |    1 | 1001 | jack  |   26 | man   | beijing  |
    |    2 | 1001 | mike  |   25 | man   | nanjing  |
    |    3 | 1003 | alex  |   24 | man   | nanchang |
    |    4 | 1004 | rose  |   14 | woman | england  |
    |    5 | 1001 | robot |   20 | man   | zhuhai   |
    +------+------+-------+------+-------+----------+
    5 rows in set (0.00 sec)
    
    // 这里采取按照不同的年龄进行分组,当然也可以按照不同的地区分组
    mysql> select * from employee group by sex;
    +------+------+------+------+-------+----------+
    | num  | d_id | name | age  | sex   | homeaddr |
    +------+------+------+------+-------+----------+
    |    1 | 1001 | jack |   26 | man   | beijing  |
    |    4 | 1004 | rose |   14 | woman | england  |
    +------+------+------+------+-------+----------+
    2 rows in set (0.00 sec)
    
    mysql>
    
    mysql> select sex, GROUP_CONCAT(name) from employee group by sex;
    +-------+----------------------+
    | sex   | GROUP_CONCAT(name)   |
    +-------+----------------------+
    | man   | jack,mike,alex,robot |
    | woman | rose                 |
    +-------+----------------------+
    2 rows in set (0.05 sec)
    
    mysql>
    
    // 统计男、女分组中,每组的人数
    mysql> select sex, count(sex) from employee group by sex;
    +-------+------------+
    | sex   | count(sex) |
    +-------+------------+
    | man   |          4 |
    | woman |          1 |
    +-------+------------+
    2 rows in set (0.00 sec)
    
    // 找出分组中个数>=的分组
    mysql> select sex, count(sex) from employee group by sex HAVING COUNT(sex) >= 3;
    
    +------+------------+
    | sex  | count(sex) |
    +------+------------+
    | man  |          4 |
    +------+------------+
    1 row in set (0.00 sec)
    
    mysql>
    
    
    // 根据d_id分组,当相同的分组中sex不同时,在进行分组
    mysql> select * from employee group by d_id, sex;
    +------+------+------+------+-------+----------+
    | num  | d_id | name | age  | sex   | homeaddr |
    +------+------+------+------+-------+----------+
    |    1 | 1001 | jack |   26 | man   | beijing  |
    |    3 | 1003 | alex |   24 | man   | nanchang |
    |    4 | 1004 | rose |   14 | woman | england  |
    +------+------+------+------+-------+----------+
    3 rows in set (0.00 sec)
    
    mysql> select * from employee;
    +------+------+-------+------+-------+----------+
    | num  | d_id | name  | age  | sex   | homeaddr |
    +------+------+-------+------+-------+----------+
    |    1 | 1001 | jack  |   26 | man   | beijing  |
    |    2 | 1001 | mike  |   25 | man   | nanjing  |
    |    3 | 1003 | alex  |   24 | man   | nanchang |
    |    4 | 1004 | rose  |   14 | woman | england  |
    |    5 | 1001 | robot |   20 | man   | zhuhai   |
    +------+------+-------+------+-------+----------+
    5 rows in set (0.00 sec)
    
    mysql> insert into employee values(6, 1001, 'nick', 33, 'woman', 'shenzhen');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from employee;
    +------+------+-------+------+-------+----------+
    | num  | d_id | name  | age  | sex   | homeaddr |
    +------+------+-------+------+-------+----------+
    |    1 | 1001 | jack  |   26 | man   | beijing  |
    |    2 | 1001 | mike  |   25 | man   | nanjing  |
    |    3 | 1003 | alex  |   24 | man   | nanchang |
    |    4 | 1004 | rose  |   14 | woman | england  |
    |    5 | 1001 | robot |   20 | man   | zhuhai   |
    |    6 | 1001 | nick  |   33 | woman | shenzhen |
    +------+------+-------+------+-------+----------+
    6 rows in set (0.00 sec)
    
    // 从这里看到,当执行d_id分组时,若遇到相同的值,
    则进行sex分组。
    mysql> select * from employee group by d_id, sex;
    +------+------+------+------+-------+----------+
    | num  | d_id | name | age  | sex   | homeaddr |
    +------+------+------+------+-------+----------+
    |    1 | 1001 | jack |   26 | man   | beijing  |
    |    6 | 1001 | nick |   33 | woman | shenzhen |
    |    3 | 1003 | alex |   24 | man   | nanchang |
    |    4 | 1004 | rose |   14 | woman | england  |
    +------+------+------+------+-------+----------+
    4 rows in set (0.00 sec)
    
    mysql>
    
    // 将所有分组的综合相加
    mysql> select sex, COUNT(sex) from employee group by sex with rollup;
    +-------+------------+
    | sex   | COUNT(sex) |
    +-------+------------+
    | man   |          4 |
    | woman |          2 |
    | NULL  |          6 |
    +-------+------------+
    3 rows in set (0.00 sec)
    
    mysql>
  • 相关阅读:
    C#数组添加元素
    C#数组排序方法
    C#遍历数组
    C#动态数组ArrayList
    C#传递数组参数
    基础题(四)
    基础题(三)
    CMDB概述(二)
    CMDB概述(一)
    Django(基础篇)
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3229272.html
Copyright © 2020-2023  润新知