-- 各个单位的人数
select
dept_id,
sum(id)
from t_user
group by dept_id
-- 查询所有的单位id
select
dept_id
from t_user
group by dept_id
-- 根据单位id分组,每个单位内会有很多人,分组查询只能展示一条记录,所以会展示mysql自然排序的第一条记录的姓名
select
dept_id,
name
from t_user
group by dept_id
group by 字段名,字段名......
-- 查询每个单位下各个年龄的人数
select
dept_id,
age,
sum(id)
from t_user
group by dept_id,age
-- 默认分隔符逗号
group_concat(column,column......)
-- 指定分隔符
group_concat(column separator ';')
返回结果 = varchar
之前的分组结果都是聚合函数的结果:平均数、总和、数量,总之显示结果只会出现一条;group_concat可以将组内多条记录连接起来
单字段
-- 每个部门的员工的姓名
select
dept_id,
group_concat(name) name
from student
group by dept_id
-- 结果
dept_id name
1 kimi,sally
2 tony,jim
多字段
-- 每个部门的员工的姓名、年龄
select
dept_id,
group_concat(name,age) info
from student
group by dept_id
-- 结果
dept_id info
1 kimi18,sally19
2 tony20,jim21
-- 由于多字段拼接没有字符连接,借助concat_ws()函数
select
dept_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
去重拼接
- 每个单位员工的年龄
select
dept_id,
group_concat(distinct age) age
from student
group by dept_id
排序拼接
- 每个单位员工的年龄,并按照年龄倒序
select
dept_id,
group_concat(age order by age desc) age
from student
group by dept_id
-- 单位员工>10人的单位+人数
select
dept_id,
count(id)
from t_user
group by dept_id
having count(id)>10