自学书籍.MySQL必知必会 - 分组数据

数据分组:

1.分组允许把数据分为多个逻辑组,以便对每个组进行聚合计算,GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前

过滤分组:

1.WHERE是在数据分组前进行过滤的,HAVING在数据分组后进行过滤的,但是WHERE子句和HAVING是可以同时出现的

2.要基于分组后的行进行过滤,WHERE子句无能为力,因为过滤是基于分组聚合值的而不是特定行值的,HAVING子句来实现分组,HAVING支持所有的WHERE操作符

SELECT cust_id, count(*) AS order_num
FROM orders
GROUP BY cust_id
HAVING order_num >= 2;


分组和排序:

1.一般在使用GROUP BY子句时,应该也给出ORDER BY子句,可确保数据正确排序的唯一办法

SELECT order_num, SUM(quantity*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING ordertotal >= 50
ORDER BY ordertotal;


SELECT子句顺序:

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


你可能感兴趣的:(自学书籍.MySQL必知必会 - 分组数据)