MySQL 保姆级教程(十一):分组数据

第 13 章 分组数据

13.1 数据分组

分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算

13.2 创建分组

输入: SELECT COUNT(*) FROM global_grants;
输出: 
+----------+
| COUNT(*) |
+----------+
|       38 |
+----------+
分析: 输出所有行数
​
输入: SELECT USER,COUNT(*) FROM global_grants GROUP BY USER;
输出: 
+------------------+----------+
| USER             | COUNT(*) |
+------------------+----------+
| mysql.infoschema |        1 |
| mysql.session    |        7 |
| mysql.sys        |        1 |
| root             |       29 |
+------------------+----------+
分析: 通过 GROUP BY 分组的形式查询,对 USER 列的每个值计算一次而不是整个表
​
注意: 
    1. GROUP BY 子句可以包含任意数目的列
    2. 如果在 GROUP BY 子句中嵌套了分组,数据将在最后规定的分组上进行汇总
    3. GROUP BY 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)
    4. 除聚集计算语句外,SELECT 语句中的每个列都必须在 GROUP BY 子句中给出
    5. 如果分组列中有 NULL 值,则 NULL 将作为一个分组返回
    6. GROUP BY 子句必须在 WHERE 子句之后, ORDER BY 子句前

13.3 过滤分组

注意: WHERE 过滤行, HAVING 过滤分组
​
输入: SELECT USER,COUNT(*) FROM global_grants GROUP BY USER HAVING COUNT(*) >= 7;
输出: 
+---------------+----------+
| USER          | COUNT(*) |
+---------------+----------+
| mysql.session |        7 |
| root          |       29 |
+---------------+----------+
分析: HAVING 支持 WHERE 所有操作符,上面例子过滤 >= 7 的行数

13.4 SELECT 子句顺序

SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suc2es2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值