SQL分组查询 - GROUP BY子句

阅读:133

对检索数据进行分组,就需要SELECT语句子句,GROUP BY子句。本节介绍GROUP BY子句。

1. GROUP BY子句

之前介绍过聚合函数,比如COUNT函数,对某列进行求和。现在有个需求,需要对商品分类进行分组,形同的类别为一组,并对每组的商品数量进行求和。执行以下SQL:

mysql> SELECT pro_sku, count(1) FROM t_product GROUP BY pro_sku;;
+---------+----------+
| pro_sku | count(1) |
+---------+----------+
|       1 |        3 |
|       2 |        1 |
|       3 |        1 |
|       5 |        2 |
+---------+----------+
4 rows in set (0.00 sec)

注意,这里是对每个pro_sku进行分组,计算每组内商品数量的和。

 

2. GROUP BY子句使用原则

  • GROUP BY子句后可以包括多个列,也就是分组可以嵌套
  • 当GROUP BY子句指定多个列分组时,汇总数据在最后列进行。
  • 大多数SQL实现,也就是DBMS不允许GROUP BY列带有长度可变的数据类型,比如文本或备注型字段。
  • SELECT语句中的每一列都必须在GROUP BY子句中给出,但是聚合函数除外。
  • 如果GROUP BY列中包含NULL值,也就是要分组的列,则NULL作为单独一组返回。
  • GROUP BY子句位置,在WHERE子句之后,ORDER BY子句之前。

 

总结:

  • GROUP BY子句是用来分组的,一般配合聚集函数使用
  • SELECT语句中的列,必须是GROUP BY子句中分组的列。

读后有收获,请作者喝杯咖啡

全部评论

发表评论
更多精彩内容,请关注微信公众号