第十章 分组数据

本章介绍如何分组数据,涉及两个新子句:GROUP BY和HAVING

1. 数据分组
上一章已实现在表的所有数据或匹配特定的WHERE子句的数据上进行的
SELECT COUNT(*) AS num_prods
FROM Products
WHERE vend_id = 'DLL01';
2. 创建分组
使用SELECT语句的GROUP BY子句建立分组
SELECT vend_id, COUNT(*) AS num_prods
FROM Products
GROUP BY vend_id;
输出

注意:



3. 过滤分组
SELECT cust_id, COUNT(*) AS orders
FROM Orders
GROUP BY cust_id
HAVING COUNT(*) >= 2;
使用HAVING子句实现,HAVING支持所有WHERE操作符,区别在于 WHERE过滤行,而HAVING过滤分组
另一种理解是WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。
这是一个重要的区别,WHERE排除的行不包括在分组中 。这可能会改变计算值,从而影响HAVING子句中基于这些值过滤掉的分组。

WHERE和HAVING可同时使用
SELECT vend_id, COUNT(*) AS num_prods
FROM Products
WHERE prod_price >= 4
GROUP BY vend_id
HAVING COUNT(*) >= 2;
4. 分组和排序
ORDER BY和GROUP BY的区别

GROUP BY分组不一定排序,需要添加ORDER BY子句
SELECT order_num, COUNT(*) AS items
FROM OrderItems
GROUP BY order_num
HAVING COUNT(*) >= 3
ORDER BY items, order_num;
注意:Access中不允许按别名排序,可将items替换为实际的计算或字段位置

5. SELECT子句顺序总结


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值