(1) group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组
(2) group by可用于单个字段分组,也可用于多个字段分组

select * from employee;
+------+------+--------+------+------+-------------+ | num | d_id | name | age | sex | homeaddr | +------+------+--------+------+------+-------------+ | 1 | 1001 | 张三 | 26 | 男 | beijinghdq | | 2 | 1002 | 李四 | 24 | 女 | beijingcpq | | 3 | 1003 | 王五 | 25 | 男 | changshaylq | | 4 | 1004 | Aric | 15 | 男 | England | +------+------+--------+------+------+-------------+ select * from employee group by d_id,sex; select * from employee group by sex; +------+------+--------+------+------+------------+ | num | d_id | name | age | sex | homeaddr | +------+------+--------+------+------+------------+ | 2 | 1002 | 李四 | 24 | 女 | beijingcpq | | 1 | 1001 | 张三 | 26 | 男 | beijinghdq | +------+------+--------+------+------+------------+ 根据sex字段来分组,sex字段的全部值只有两个('男'和'女'),所以分为了两组 当group by单独使用时,只显示出每组的第一条记录 所以group by单独使用时的实际意义不大

group by + group_concat()
(1) group_concat(字段名)可以作为一个输出字段来使用,
(2) 表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合

select sex from employee group by sex;
+------+ | sex | +------+ | 女 | | 男 | +------+ select sex,group_concat(name) from employee group by sex; +------+--------------------+ | sex | group_concat(name) | +------+--------------------+ | 女 | 李四 | | 男 | 张三,王五,Aric | +------+--------------------+ select sex,group_concat(d_id) from employee group by sex; +------+--------------------+ | sex | group_concat(d_id) | +------+--------------------+ | 女 | 1002 | | 男 | 1001,1003,1004 | +------+--------------------+

group by + 集合函数
(1) 通过group_concat()的启发,我们既然可以统计出每个分组的某字段的值的集合,那么我们也可以通过集合函数来对这个"值的集合"做一些操作

select sex,group_concat(age) from employee group by sex;
+------+-------------------+ | sex | group_concat(age) | +------+-------------------+ | 女 | 24 | | 男 | 26,25,15 | +------+-------------------+ 分别统计性别为男/女的人年龄平均值 select sex,avg(age) from employee group by sex; +------+----------+ | sex | avg(age) | +------+----------+ | 女 | 24.0000 | | 男 | 22.0000 | +------+----------+ 分别统计性别为男/女的人的个数 select sex,count(sex) from employee group by sex; +------+------------+ | sex | count(sex) | +------+------------+ | 女 | 1 | | 男 | 3 | +------+------------+

group by + having
(1) having 条件表达式:用来分组查询后指定一些条件来输出查询结果
(2) having作用和where一样,但having只能用于group by

select sex,count(sex) from employee group by sex having count(sex)>2; +------+------------+ | sex | count(sex) | +------+------------+ | 男 | 3 | +------+------------+

group by + with rollup
(1) with rollup的作用是:在最后新增一行,来记录当前列里所有记录的总和

select sex,count(age) from employee group by sex with rollup; +------+------------+ | sex | count(age) | +------+------------+ | 女 | 1 | | 男 | 3 | | NULL | 4 | +------+------------+ select sex,group_concat(age) from employee group by sex with rollup; +------+-------------------+ | sex | group_concat(age) | +------+-------------------+ | 女 | 24 | | 男 | 26,25,15 | | NULL | 24,26,25,15 | +------+-------------------+

转载于:https://www.cnblogs.com/wangyayun/p/6835686.html

Mysql分组查询group by语句详解相关推荐

  1. mysql切换用户sql语句,MySQL用户管理及SQL语句详解

    [(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...

  2. pdo mysql 绑定查询_php mysql PDO 查询操作的实例详解

    php mysql PDO 查询操作的实例详解 php mysql PDO 查询操作的实例详解 这篇文章主要介绍了php mysql PDO 查询操作的实例详解的相关资料,希望通过本文能帮助到大家,需 ...

  3. php mysql PDO 查询操作的实例详解

    php mysql PDO 查询操作的实例详解 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  4. mysql useing查询_mysql explain语法详解--优化你的查询

    先解析一条sql语句,看出现什么内容 EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.addr ...

  5. solr分组查询、统计功能详解

    原文网址:http://www.cnblogs.com/Sonet-life/p/3721667.html 说到分组统计估计大家都不会陌生,就是数据库的group by语句,但是当我们采用solr4. ...

  6. mysql 查询分组平均数_9、mysql分组查询-----group by 和 having

    举例说明:有 Store_Information表 之前我们根据这个表,用函数可以算出sales的总和,平均数等 如果现在我们需要算出每一间店(store_name)的销售总额(sales)呢? 比如 ...

  7. Oracle/MySQL数据库的表间关联查询_多表关联查询的SQL语句详解

    文章目录 内连接 inner join 示例 外连接 outer join left outer join 左外连接 示例 right outer join 右外连接 示例 full outer jo ...

  8. oracle和mysql查询_Oracle和MySQL分组查询GROUP BY

    答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段必须在GROUP BY后边出现,否则会报错:"ORA-00979: not a GROUP BY expressi ...

  9. mysql的groupby_MYSQL GROUP BY用法详解

    背景介绍 最近在设计数据库的时候因为开始考虑不周,所以产生了大量的重复数据.现在需要把这些重复的数据删除掉,使用到的语句就是Group By来完成.为了进一步了解这条语句的作用,我打算先从简单入手. ...

最新文章

  1. 王达:影响100万网管员的“网管员”『英雄故事』
  2. SQLServer DBA 三十问
  3. pythonlower函数_python中lower函数实现方法及用法讲解
  4. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结
  5. 调度器Quartz的简述与使用总结
  6. 可以直视烤箱里面的食物吗?
  7. 12 操作系统第三章 内存管理 非连续分配管理方式 基本分页存储管理 基本分段存储管理 段页式存储管理
  8. 架构设计基础:单服务.集群.分布式,基本区别和联系
  9. 华为harmonyos发布会,海雀科技首款HarmonyOS智能摄像头Pro亮相华为智慧屏新品发布会...
  10. 如何做一名合格的面试官
  11. 黑群硬盘休眠问题的一种解决思路(DS916+,DSM 6.1.7)
  12. 智能优化算法:黑猩猩优化算法-附代码
  13. 百兆以太网口通信速率_千兆以太网的传输速度
  14. Freeswitch 录制视频并播放
  15. hibernate3连oracle的各种坑。。
  16. 智能急救站入驻公共场所,搭起生命安全新防线
  17. 车轮轨迹原理_方向盘与车轮轨迹图解,方向盘和车轮的动态图
  18. runHiC分析HiC_seq数据
  19. SDIO读写SD卡速度有多快?
  20. 扰码器原理详解及verilog实现

热门文章

  1. hydra mysql 爆破_Hydra(爆破神器)使用方法
  2. matlab仿真环境,高低温环境模拟系统MATLAB仿真研究
  3. 指令引用了 内存 该内存不能为read 一直弹窗_【翻译】使用Rust测试ARM和X86内存模型
  4. python socket模块实现udp通信_Python基于socket模块实现UDP通信功能示例
  5. 图书管理系统数据字典_2. 结构化——数据字典
  6. 微机原理——总线和时序
  7. python 示例_带有示例的Python File write()方法
  8. 取地址符和解引用符的区别_(&)和解引用(*)运算符的地址以及C中的指针...
  9. oracle查看数据库是否恢复成功_记一次解决docker下oracle数据库故障事例
  10. c语言编写的每个函数都可以进行独立的编译,2017年辽宁师范大学计算机与信息技术学院836C语言程序设计考研冲刺密押题...