MySQL GROUP BY 用法介绍
MySQL 中 GROUP BY 用法
简介
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
- 可以把 分组理解成 Excel 中的分组。
- 把 合计函数理解成 Excel 中的求和、求平均值等。
语法
SELECT column1, column2, aggregate_function(column3)
FROM table_name
WHERE condition
GROUP BY column1, column2
ORDER BY column1, column2;
- column1, column2:要进行分组统计的列。
- aggregate_function(column3):对列column3进行合计函数运算。
- table_name:表名。
- condition:条件语句,筛选出符合条件的内容。
- GROUP BY column1, column2:对列column1和column2进行分组。
- ORDER BY column1, column2:对结果集进行排序。
示例
Demo 数据库
id | city | name | cus_name |
---|---|---|---|
1 | 深圳 | 供应商 | 客户 |
2 | 深圳 | 供应商2 | 客户 |
3 | 广州 | 供应商3 | 客户1 |
4 | 广州 | 供应商 | 客户四 |
5 | 深圳 | 供应商 | 客户 |
6 | 深圳 | 供应商2 | 客户 |
7 | 广州 | 供应商3 | 客户1 |
8 | 深圳 | 供应商 | null |
9 | 深圳 | 供应商2 | null |
10 | 广州 | 供应商3 | null |
简单分组 根据 name 分组
select name from table_name group by name;
带条件分组 根据 name 分组,并筛选出 cus_name 不为 null 的记录
select name from table_name where cus_name is not null group by name;
带条件分组 根据 name 分组,并筛选出 cus_name 不为 null 的记录,并按照 name 进行排序
select name from table_name where cus_name is not null group by name order by name;
带条件分组 根据 name 分组,并筛选出 cus_name 不为 null 的记录,并按照 name 进行排序,并统计 cus_name 的数量
select name, count(cus_name) from table_name where cus_name is not null group by name order by name;
- 注意:count() 返回的是查询条数,默认是不计算 null 值,解决这个问题需要在 count() 函数中指定 null
select name, count(IFNULL(cus_name, 0)) from table_name where cus_name is not null group by name order by name;