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;
posted @ 2024-06-07 11:20  影的记忆  阅读(16)  评论(0编辑  收藏  举报