• mysql group by详解


    SELECT * FROM employee group by gender;

    为什么只显示一条数据呢?按理说,应该是像excel一样,这个组后面跟着所有数据,没错就是这样,解释一下

     

     执行下面语句,得到左边结果

    1. SELECT name FROM test
    2. GROUP BY name

     id和number中有的单元格里面的内容是多个值的,只会显示一个。

    当然name表格不止一个aa但是,由于是按name分组,所以select name是可以的。

     

    知识点:
    1、count(*),count(列名)都可以,区别在于,count(列名)是统计非NULL的行数

    再举个例子

    1. SELECT name,sex FROM tb_students_info
    2. GROUP BY sex;

    表里有很多男生女生,显然只返回了一条记录

    那想要都显示怎么办?

    关键字:group_concat()

    GROUP BY 关键字可以和 GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。

    1. SELECT sex, GROUP_CONCAT(name) FROM tb_students_info
    2. GROUP BY sex;

     所以说GROUP BY 一般不单独使用。

    那么对于单元格有多个数据的情况怎么办呢?除了都显示,我们还常用聚合函数,聚合函数就用来输入多个数据,输出一个数据的。聚合函数包括 COUNT(),SUM(),AVG(),MAX() 和 MIN()等。其中,COUNT() 用来统计每个组内记录的条数;SUM() 用来计算每个组内字段值的总和;AVG() 用来计算每个组内字段值的平均值;MAX() 用来查询每个组内字段的最大值;MIN() 用来查询每个组内字段的最小值。

    多列分组

    下面根据 tb_students_info 表中的 age 和 sex 字段进行分组查询。SQL 语句和运行结果如下:

    1. SELECT age,sex,GROUP_CONCAT(name) FROM tb_students_info
    2. GROUP BY age,sex;

    上面实例在分组过程中,先按照 age 字段进行分组,当 age 字段值相等时,再把 age 字段值相等的记录按照 sex 字段进行分组。 也就是age,sex这俩一样的为一组

    多个字段分组查询时,会先按照第一个字段进行分组。如果第一个字段中有相同的值,MySQL 才会按照第二个字段进行分组。如果第一个字段中的数据都是唯一的,那么 MySQL 将不再对第二个字段进行分组。

  • 相关阅读:
    BFS广度优先
    工业交换机的“自适应”是什么意思?
    【前端】ECMAScript6从入门到进阶
    qml 两个listview共用一个listmodel,显示排斥的数据
    数字孪生在工厂领域的应用和优势
    从抽象类和普通类的区别中体会设计模式
    蓝牙 - BLE SPP实现举例 (Bluecode Protocol Stack)
    vue(十)——插槽slot
    JS——利用JS实现 tab 切换详解
    Zookeeper 源码分析流程
  • 原文地址:https://blog.csdn.net/qq_37891604/article/details/127428724