数据分组

  1. select vend_id count(*) as num_prods from products group by vend_id;

image.png

  • 使用Group By子句可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更细致的控制
  • 除聚集(avg,count,max,min,sum)计算语句外,select语句中的每个列都必须在Group BY子句中给出
  • Group by子句必须在where子句之后,order by之前
  • group by子句中列出的每个列都必须是检索列或者有效的表达式(但不能是聚集函数)。如果select中使用表达式,则必须在Group by子句中使用相同的表达式,不能使用别名。

使用ROLLUP
使用with rollup关键字,可以得到每个分组及每个分组汇总级别(针对每个分组的值)
image.png

过滤分组

where不能进行分组,where没有分组的概念。
Mysql提供了Having字句,Having与where非常类似,唯一区别就是Having过滤分组,而where过滤行

image.png
查看下单两次以上的顾客id

分组和排序

一般在使用Group by子句的时候,应该也给出Order by子句。

image.png