创建分组

分组是在select语句的group by字句中建立的。

举例:select vend_id, count(*) as num_prods from products group by vend_id;

结果:

\1.PNG

在具体使用group by字句前,需要知道一些重要的规定。

  • group by字句可以包含任意数目的列。这使得能对分组进行嵌套,为数据分组提供更精细化的控制。

  • 如果在group by字句中嵌套了分组,数据将在最后规定的分组上进行汇总。

  • group by字句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在select中使用表达式,则必须在group by字句中指定相同的表达式。不能使用别名。

  • 如果分组列中具有null值,则null将作为一个分组返回。

  • group by字句必须出现在where字句之后,order by字句之前。

过滤分组

过滤分组使用having

having和where的差别:where在数据分组前进行过滤,having在数据分组后进行过滤。

举例:select vend_id, count(*) as num_prods from products where prod_price >= 10 group by vend_id having count(*) >=2

说明:列出具有2个(含)以上、价格为10(含)以上产品的供应商

\2.PNG

select 字句顺序

一下为select 语句中使用必须遵循的次序:

字句          说明                是否必须使用
select          要返回的列或表达式     是
from           从中检索数据的表      仅在从表选择数据时使用
where          行级过滤            否
group by        分组说明            仅在按组计算聚集是使用
having         组级过滤            否
order by        输出排序顺序         否
limit          要检索的行数         否

参考书籍:

  • MySQL必知必会


MySql

登陆发表评论