塘厦 网站建设 百度推广,上海哪里做网站好,怎么将网站做成小程序,手机app开发软件制作文章目录 一、介绍1、分组查询的内容2、多字段分组3、将查询内容连接group_concat4、有条件的分组查询having 一、介绍
将某个字段的相同值分为一组#xff0c;分组查询的结果强调的是一个整体#xff0c;每组内容只显示一行分组查询的内容一般要查询分组字段#xff0c;因… 文章目录 一、介绍1、分组查询的内容2、多字段分组3、将查询内容连接group_concat4、有条件的分组查询having 一、介绍
将某个字段的相同值分为一组分组查询的结果强调的是一个整体每组内容只显示一行分组查询的内容一般要查询分组字段因为要知道是哪个组的信息
1、分组查询的内容
聚合函数组内多条记录的统计结果
-- 各个单位的人数
selectdept_id,sum(id)
from t_user
group by dept_id查询分组字段根据某个字段分组那么查询出来的分组字段也是一样的
-- 查询所有的单位id
selectdept_id
from t_user
group by dept_id查询分组字段外的其他字段取排序后(mysql自然排序)的第一条记录的信息
-- 根据单位id分组每个单位内会有很多人分组查询只能展示一条记录所以会展示mysql自然排序的第一条记录的姓名
selectdept_id,name
from t_user
group by dept_id2、多字段分组
group by 字段名,字段名......-- 查询每个单位下各个年龄的人数
selectdept_id,age,sum(id)
from t_user
group by dept_id,age3、将查询内容连接group_concat
-- 默认分隔符逗号
group_concat(column,column......)-- 指定分隔符
group_concat(column separator ;)返回结果 varchar 之前的分组结果都是聚合函数的结果平均数、总和、数量总之显示结果只会出现一条group_concat可以将组内多条记录连接起来 单字段 -- 每个部门的员工的姓名
selectdept_id,group_concat(name) name
from student
group by dept_id-- 结果
dept_id name
1 kimi,sally
2 tony,jim多字段 -- 每个部门的员工的姓名、年龄
selectdept_id,group_concat(name,age) info
from student
group by dept_id-- 结果
dept_id info
1 kimi18,sally19
2 tony20,jim21-- 由于多字段拼接没有字符连接借助concat_ws()函数
selectdept_id,group_concat(concat_ws(-,name,age)) info
from student
group by dept_id-- 结果
dept_id info
1 kimi-18,sally-19
2 tony-20,jim-21去重拼接 - 每个单位员工的年龄
selectdept_id,group_concat(distinct age) age
from student
group by dept_id排序拼接 - 每个单位员工的年龄并按照年龄倒序
selectdept_id,group_concat(age order by age desc) age
from student
group by dept_id4、有条件的分组查询having
需要结合group by使用having与where的区别 where只能过滤普通字段的条件having可以过滤普通字段的条件也可以过滤聚合函数的条件但是一般都是where过滤普通字段having过滤分组后的聚合条件
-- 单位员工10人的单位人数
selectdept_id,count(id)
from t_user
group by dept_id
having count(id)10