Mysql中强大的group by语句解析

 更新时间:2023年07月13日 10:28:16   作者:是馄饨呀  
这篇文章主要介绍了Mysql中强大的group by语句解析,GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数,需要的朋友可以参考下

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语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈MySQL数据库中日期中包含零值的问题

    浅谈MySQL数据库中日期中包含零值的问题

    下面小编就为大家带来一篇浅谈MySQL数据库中日期中包含零值的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • MySQL日期与时间函数的使用汇总

    MySQL日期与时间函数的使用汇总

    这篇文章主要给大家汇总介绍了关于MySQL日期与时间函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 解决MySQL登录报错1130:1130 Host ***.***.***.*** is not allowed to connect to this MySQL server

    解决MySQL登录报错1130:1130 Host ***.***.***.*** is not allowe

    有时候在登录到MySQL服务器时会遇到1130错误,这是因为无法连接到MySQL服务器或其他一些原因,这篇文章主要给大家介绍了关于解决MySQL登录报错1130:1130 Host ***.***.***.*** is not allowed to connect to this MySQL server的相关资料,需要的朋友可以参考下
    2023-12-12
  • mysql 控制台操作

    mysql 控制台操作

    其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。
    2009-06-06
  • sql中替换函数replace()用法与实例总结

    sql中替换函数replace()用法与实例总结

    这篇文章主要给大家介绍了关于sql中替换函数replace()用法与实例的相关资料,在SQL中REPLACE函数用于替换一个字符串中的一部分为另一个字符串,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • MySQL分表自动化创建的实现方案

    MySQL分表自动化创建的实现方案

    在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在多个表中,从而提高数据库的性能和可维护性,本文介绍了MySQL分表自动化创建的实现方案
    2025-01-01
  • MySQL查询倒数第二条记录实现方法

    MySQL查询倒数第二条记录实现方法

    这篇文章主要介绍了MySQL查询倒数第二条记录实现方法,本文直接给出代码实例,重要部分已经加红提示,需要的朋友可以参考下
    2015-05-05
  • 解决mysql创建数据库后出现:Access denied for user ''root''@''%'' to database ''xxx''的问题

    解决mysql创建数据库后出现:Access denied for user ''root''@''%'' to dat

    这篇文章主要给大家介绍了如何解决mysql在创建数据库后出现:Access denied for user 'root'@'%' to database 'xxx'的错误提示,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • 查找MySQL线程中死锁的ID的方法

    查找MySQL线程中死锁的ID的方法

    这篇文章主要介绍了查找MySQL线程中死锁的ID的方法,文中介绍的方法主要是从数据字典里查找,需要的朋友可以参考下
    2015-05-05
  • MySQL给查询记录增加序列号的实现方法

    MySQL给查询记录增加序列号的实现方法

    这篇文章主要介绍了MySQL给查询记录增加序列号的实现方法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的参考价值,需要的朋友可以参考下
    2023-11-11

最新评论