欢迎投稿

今日深度:

Mysql中强大的group by语句解析,

Mysql中强大的group by语句解析,


目录
  • group by语句介绍
  • 实例
    • 建表 user表
    • (1)基本用法
    • (2)GROUP BY语句中的GROUP_CONCAT函数()
    • (3)利用 count函数来查询性别的总人数
    • (4)where语句
    • (5)SUM MAX MIN AVG 函数
    • (6)HAVING 子句
    • (7)WITH ROLLUP 子句:
  • 结尾

    group by语句介绍

    GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

    工具:

    sqlyog

    实例

    建表 user表

    CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
      `number` int(11) DEFAULT NULL,
      `sex` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL,
      `salary` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

    在这里插入图片描述

    在这里插入图片描述

    信息就不补充了~

    (1)基本用法

    根据性别 sex 来进行分组,查询 user 表中的姓名,年龄,性别。虽然是分组了,但只显示一个用户,其他的不显示。

    SELECT NAME,age,sex FROM USER GROUP BY sex;

    在这里插入图片描述

    (2)GROUP BY语句中的GROUP_CONCAT函数()

    根据 sex 字段,来查询 name字段和 age字段的详细信息。

    SELECT sex ,GROUP_CONCAT(NAME), GROUP_CONCAT(age)FROM USER GROUP BY sex;

    在这里插入图片描述

    (3)利用 count函数来查询性别的总人数

    根据 sex 字段来查询 name 字段的详细信息和 sex 字段性别的人数。

    SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER GROUP BY sex;

    在这里插入图片描述

    (4)where语句

    根据 sex字段进行分组,用 where语句来查询年龄大于25的人数

    SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER  WHERE age >25 GROUP BY sex;

    在这里插入图片描述

    (5)SUM MAX MIN AVG 函数

    根据 sexSUM MAX MIN AVG 函数来查询用户的总资金,最大资金,最小资金,平局资金

    SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex),SUM(salary),MAX(salary),MIN(salary),AVG(salary) FROM USER  GROUP BY sex;

    在这里插入图片描述

    (6)HAVING 子句

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。 HAVING 子句可以让我们筛选分组后的各组数据。 根据 sex 语句进行分组,来查询各组中资金大于1500的组

    SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex) FROM USER   GROUP BY sex HAVING SUM(salary)>1500;

    在这里插入图片描述

    (7)WITH ROLLUP 子句:

    WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。

    SELECT sex ,GROUP_CONCAT(NAME),COUNT(sex),SUM(salary),MAX(salary),MIN(salary),AVG(salary) FROM USER  GROUP BY sex WITH ROLLUP;

    在这里插入图片描述

    结尾

    从中发现 GROUP BY 函数还是十分强大的,使得分组查找效率更高!

    到此这篇关于Mysql中强大的group by语句解析的文章就介绍到这了,更多相关Mysql的group by语句内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

    您可能感兴趣的文章:
    • mysql中distinct和group by的区别浅析
    • MySQL中的distinct与group by比较使用方法
    • 高版本Mysql使用group by分组报错的解决方案
    • MySQL中distinct和group by去重效率区别浅析
    • MySQL出现this is incompatible with sql_mode=only_full_group_by错误的解决办法

    www.htsjk.Com true http://www.htsjk.com/Mysql/46825.html NewsArticle Mysql中强大的group by语句解析, 目录 group by语句介绍 实例 建表 user表 (1)基本用法 (2)GROUP BY语句中的GROUP_CONCAT函数() (3)利用 count函数来查询性别的总人数 (4)where语句 (5)...
    评论暂时关闭