您的位置:首页 > 数据库 > MySQL

MySQL之分组数据

2018-02-11 11:57 169 查看
1:数据分组

下列例子返回供应商1003提供的产品数目:

select count(*) as num_prods
from products
where vend_id=1003


但如果要返回每个供应商提供的产品数目怎么办?或者返回之提供单项产品的供应商所提供的产品,或返回提供10个以上的产品的供应商怎么办?

这时就需要用到分组了,分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。

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


2:过滤分组(having是用来过滤特定的分组的)

having和where的功能是类似的,唯一的区别是where过滤行,而having过滤分组。

where是在数据分组前进行过滤,having是在数据分组后进行过滤的。

例:列出具有2个以上、价格为10以上的产品的供应商:

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


3:分组和排序 group by order by

一般在使用group by子句时,应该也给出order by子句,这是保证数据正确排序的唯一方法,千万不要仅依赖group by排序数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql select as