MySQL 数据分组

数据分组

    • GROUP BY 和 HAVING 子句
      • 1、创建分组 GROUP BY
      • 2、过滤分组
      • 3、分组和排序

学习 MySQL,整理语法知识,可以打开左侧的「MySQL基础」专栏查看全系列笔记

GROUP BY 和 HAVING 子句

按照某种逻辑,对数据进行分组,在每个组分别进行聚集计算

1、创建分组 GROUP BY

SELECT id, COUNT(*) AS num
FROM list
GROUP BY id;
# 根据 id 创建分组,分别对每个分组的行计数

GROUP BY子句的限制

  • 可以嵌套任意数目的列
  • 每个列都必须为列名/有效的表达式,不能是别名
  • 除聚集计算语句外,SELECT 语句中的每个列都必须出现在 GROUP BY 与剧中
  • 分组列中的 NULL 值将被分为一个分组返回

2、过滤分组

SELECT id, COUNT(*) AS num
FROM list
WHERE PRICE >= 10
GROUP BY id
HAVING COUNT(*) >= 2; 
# 筛选出 price>=10 的数据
#再根据 id 进行分组,最后筛选出行数大于等于 2 的分组

WHERE 和 HAVING 的区别

  • 都有过滤筛选的作用
  • WHERE 在分组前过滤,对象是行
  • HAVING 再分组后过滤,对象是分组

3、分组和排序

GROUP BY 子句分组后,本质上并没有排序,应使用 ORDER BY 子句对分组进行排序再输出

你可能感兴趣的:(MySQL基础系列笔记)