第十章 分组数据

xiaoxiao2021-02-28  122

本章介绍如何分组数据,涉及两个新子句: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子句顺序总结
转载请注明原文地址: https://www.6miu.com/read-20117.html

最新回复(0)