SQL之数据分组

为何数据分组

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

创建分组

使用 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 子句中基于这些值过滤掉的分组。

猜你喜欢

转载自blog.csdn.net/hacker_Dem_br/article/details/86517108