在 MySQL SELECT 语句中,允许使用 GROUP BY 子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,实现对每个组而不是对整个结果集进行整合。

语法格式如下:

GROUP BY { <列名> | <表达式> | <位置> } [ASC | DESC]

语法说明如下:

  • <列名>:指定用于分组的列。可以指定多个列,彼此间用逗号分隔。
  • <表达式>:指定用于分组的表达式。通常与聚合函数一块使用,例如可将表达式 COUNT(*)AS' 人数 ' 作为 SELECT 选择列表清单的一项。
  • <位置>:指定用于分组的选择列在 SELECT 语句结果集中的位置,通常是一个正整数。例如,GROUP BY 2 表示根据 SELECT 语句列清单上的第 2 列的值进行逻辑分组。
  • ASC|DESC:关键字 ASC 表示按升序分组,关键字 DESC 表示按降序分组,其中 ASC 为默认值,注意这两个关键字必须位于对应的列名、表达式、列的位置之后。

注意:GROUP BY 子句中的各选择列必须也是 SELECT 语句的选择列清单中的一项。

对于 GROUP BY 子句的使用,需要注意以下几点。

  • GROUP BY 子句可以包含任意数目的列,使其可以对分组进行嵌套,为数据分组提供更加细致的控制。
  • GROUP BY 子句列出的每个列都必须是检索列或有效的表达式,但不能是聚合函数。若在 SELECT 语句中使用表达式,则必须在 GROUP BY 子句中指定相同的表达式。
  • 除聚合函数之外,SELECT 语句中的每个列都必须在 GROUP BY 子句中给出。
  • 若用于分组的列中包含有 NULL 值,已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击则 NULL 将作为一个单独的分组返回;若该列中存在多个 NULL 值,则将这些 NULL 值所在的行分为一组。

【实例】根据 dept_id 对 tb_students_info 表中的数据进行分组,将每个学院的学生姓名显示出来,输入的SQL语句和执行结果如下所示。

  mysql> SELECT dept_id,GROUP_CONCAT(name) AS names      -> FROM tb_students_info      -> GROUP BY dept_id;  +---------+---------------+  | dept_id | names         |  +---------+---------------+  |       1 | Dany,Jane,Jim |  |       2 | Henry,John    |  |       3 | Green,Thomas  |  |       4 | Susan,Tom     |  |       6 | Lily          |  +---------+---------------+  5 rows in set (0.02 sec)

由运行结果可以看出,根据 dept_id 的不同分别统计了 dept_id 相同的姓名。

MySQL GROUP BY:分组查询相关推荐

  1. mysql group by 分组查询

    分组的SQL语句有2个: group by 和分组聚合函数实现 partition by (oracle和postgreSQL中的语句)功能 group by + having 组合赛选数据 注意:h ...

  2. java中mysql分组查询_ES对应mysql的group by分组查询javaApi,多对多关系的分组查询...

    ES对应mysql的group by分组查询javaApi,多对多关系的分组查询 比如我这边有个下列订单索引数据,现在的需求是按用户(fmerchantId)和支付方式(fchannelId)进行分组 ...

  3. mysql按月份分组查询_mysql如何按月份分组查询

    mysql按月份分组查询的方法:根据format字符串格式化date值,语法为[DATE_FORMAT(date,format)],其中[%M ]为月的名字. mysql按月份分组查询的方法:sele ...

  4. 使用mysql语句进行分组查询

    使用mysql语句进行分组查询 1 作用 对整个数据表的某几个字段进行分组,然后通过分组函数得到我们想要的结果 2 如何用 2.1 只分一个组 2.1.1 本质 就是根据分组字段把整个表的数据分为几组 ...

  5. group by分组查询后排序

    group by分组查询后排序 如:分组查询 SELECT s.name name,COUNT(s.id) value FROM t_setmeal s,t_order o WHERE s.id=o. ...

  6. MySQL使用group by分组查询每组最新的一笔数据

    问题来源 今天遇到一个查询数据库数据的问题:要获取每个分组最新的一笔数据,并将每个分组最新的一笔数据重新组成一个新的列表 这种场景,当然是想到了分组查询,使用 group by,思路也很清晰: 将所有 ...

  7. 9、使用GROUP BY分组查询

    在 MySQL 中,GROUP BY 关键字可以根据一个或多个字段对查询结果进行分组. 使用 GROUP BY 关键字的语法格式如下: GROUP BY <字段名> 其中,"字段 ...

  8. 2020-09-10 MYSQL按时间段分组查询当天,每小时,15分钟数据分组

    查询的需求比较麻烦,根据spreader_id和返回的状态码来判断事件的回传成功率,但是还需要新增时间段的查询,比如产品要的是每15分钟内数据的回传成功率. 这样的话就需要对时间段进行分组查询,我保存 ...

  9. mysql数据库如何分组查询_数据库MySQL--分组查询

    分组数据:group by 子句 分组查询语法: select 分组函数,列(要求是出现在group by的后面) from 表 (where 筛选条件)  # where 必须连接from关键字 g ...

  10. 都是MyBatis分页工具PageHelper惹的祸 —— 记一次加入GROUP BY分组查询成功,不分组则失败的奇怪现象Debug过程

    项目技术框架 请您打开世界上最好使的Java编译器IntelliJ IDEA,建一个SpringBoot项目,保证项目中包含以下依赖: 后端框架:SpringBoot + JUnit 数据库持久化:M ...

最新文章

  1. Redis:事件驱动(IO多路复用)
  2. PHP--字符串处理函数
  3. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 生成对抗网络
  4. Excel 将换行符替换为空
  5. python语言-Python语言的特点有哪些?
  6. IPTV码流分析指标
  7. win10 U盘无法识别修复方法
  8. 想给我们的线下分享会起个名字,求建议!
  9. python下载自己网易云歌单的歌曲
  10. mumu模拟器屏蔽root,mumu模拟器下载
  11. H3C服务器带外默认账号和密码
  12. 逻辑回归——一文带你搞懂逻辑回归原理
  13. 服务器导出word文档中有乱码,使用Aspose.word DOC转PDF文件乱码问题-Doc文件
  14. 看《奇迹.笨小孩》有感
  15. 高考数学试题不等关系与不等式|附习题
  16. 晨曦记账本记账,计算每个账户的某时间段账目
  17. Win10彻底关闭实时保护
  18. 华为9306 snmp OID
  19. HTC ruu 解密 工具编译 提取解密key 自行解密 流程记录
  20. 安装软件时出现不能打开要写入的文件怎么解决?

热门文章

  1. WeChat之小工具:基于C++程序代码设计的查看微信撤销、撤回消息(包括文本、图片、视频等)GUI小工具
  2. Crawler:基于BeautifulSoup库+requests库+伪装浏览器的方式实现爬取14年所有的福彩网页的福彩3D相关信息,并将其保存到Excel表格中
  3. Python机器学习类库常见问题及解决
  4. 钢琴演奏:舒伯特的小夜曲 --- 女儿的钢琴学习
  5. 从零开始Vue项目实战(二)-搭建环境
  6. CSS 高级布局技巧
  7. Word中更新交叉引用
  8. JVM 学习笔记 1. JVM 运行模型
  9. 软件安装被分成了两个iso文件怎么安装
  10. 低功耗蓝牙系统结构流程图