数据分组
GROUP BY 子句可以包含任意数目的列,进行嵌套,这样的话数据将在最后规定的分组进行汇总。
GROUP BY 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数),如果在select中使用表达式则必须在group by子句中指定相同的表达式,不能使用别名。
除聚集计算语句外,select语句中的每个列都必须在group by子句中给出。
分组列中的null值将被单独分为一组
HAVING 用来过滤分组,如:
select cust_id,count(*) as orders from orders group by cust_id having count(*)>=2;
where在数据分组前进行过滤,having在分组后进行过滤
语句顺序:select、from、where、group by、having、order by、limit
建立子查询技巧:首先建立和测试最内层的查询,然后用硬编码数据建立和测试外层查询,并且尽在确认它正常后才嵌入子查询。