您的位置:首页 > 数据库

SQL之数据分组

2019-01-17 00:21 281 查看

为何数据分组

当希望得知不同的组中具有的不同数量的某一列内容时,则需要进行对数据的分组~

创建分组

使用 SELECT 语句的 GROUP BY 子句进行创建。

输入▼

#

SELECT id,COUNT(*) AS num_prods
FROM Products
GROUP BY id;

输出▼

+-------+----------+
|  id   | num_prods|
+-------+----------+
| BRS01 |    3     |
| DLL01 |    4     |
| FNG01 |    2     |
+-------+----------+

过滤分组

由于 WHERE 只能对行进行过滤,而不能对组进行过滤。

因此使用 HAVING 语句~

HAVING 支持所有的 WHERE 操作符

输入▼

# 方法类似上一个,仅仅是对COUNT(*)进行了过滤,v

SELECT id,COUNT(*) AS orders
FROM Orders
GROUP BY id
HAVING COUNT(*) >=2

输出▼

+------------+----------+
|     id     |  orders  |
+------------+----------+
| 1000000001 |    2     |
+------------+----------+

WHERE 和 HAVING 区别:

  • WHERE 在数据分组前进行过滤
  • HAVING 在数据分组后进行过滤

由于 WHERE 排除的行不包括在分组中,这可能会改变计算值进而影响 HAVING 子句中基于这些值过滤掉的分组。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: