博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql分组查询
阅读量:6253 次
发布时间:2019-06-22

本文共 3165 字,大约阅读时间需要 10 分钟。

hot3.png

group by

(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://my.oschina.net/yzbty32/blog/1635952

你可能感兴趣的文章
Yii: gii 403 Error you are not allowed to access this page
查看>>
计算汉字长度
查看>>
Codeforces 911E - Stack Sorting
查看>>
BZOJ 1853: [Scoi2010]幸运数字
查看>>
基于敏捷的测试交付物通用设计
查看>>
BFS --- 素数环
查看>>
for循环每次取出一个字符(不是字节)
查看>>
linux版本选择
查看>>
不写for也能选中checkbox!
查看>>
PCIE_DMA:xapp1052学习笔记
查看>>
css
查看>>
Java规则引擎及JSR-94[转]
查看>>
【c学习-13】
查看>>
给报表增加页眉
查看>>
Mysql配置参数说明
查看>>
python ----字符串基础练习题30道
查看>>
K 班1-7,alpha,beta 作业成绩汇总
查看>>
uva-10879-因数分解
查看>>
清空表且自增的id重新从0开始
查看>>
[杂记]如何在LaTeX里插入高亮代码
查看>>