1 数据分组
从上一章知道,SQL聚集函数可用来汇总数据。这使我们能够对行进 行计数,计算和与平均数,获得最大和最小值而不用检索所有数据。 目前为止的所有计算都是在表的所有数据或匹配特定的WHERE子句的 数据上进行的。提示一下,下面的例子返回供应商1003提供的产品数目:
但如果要返回每个供应商提供的产品数目怎么办?或者返回只提供 单项产品的供应商所提供的产品,或返回提供10个以上产品的供应商怎 么办? 这就是分组显身手的时候了。分组允许把数据分为多个逻辑组,以 便能对每个组进行聚集计算。
2 创建分组
分组是在SELECT语句的GROUP BY子句中建立的。理解分组的最好办法是看一个例子:
上面的SELECT语句指定了两个列,vend_id包含产品供应商的ID, num_prods为计算字段(用COUNT(*)函数建立)。GROUP BY子句指 示MySQL按vend_id排序并分组数据。这导致对每个vend_id而不是整个表 计算num_prods一次。从输出中可以看到,供应商1001有3个产品,供应商 1002有2个产品,供应商1003有7个产品,而供应商1005有2个产品。
因为使用了GROUP BY