码迷,mamicode.com
首页 > 数据库 > 详细

MySQL--分组数据

时间:2018-09-05 00:50:37      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:顺序   use   技术   现在   ble   级别   连接数据库   ima   count   

1、数据分组

1 #连接数据库
2 use newschema;
3 #查看表中数据
4 select *from products;
5 #返回供应商1003提供的产品数目
6 select count(*) as num_prods from products where vend_id=1003;

技术分享图片

2、创建分组

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

技术分享图片

**Group By 子句必须出现在where自居之后,order by 子句之前。

#使用with rollup
select vend_id,count(*) as num_prods from products group by vend_id with rollup;

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

技术分享图片

 

3、过滤分组

所有类型的where子句都可以用having来替代。唯一差别师where过滤行,而having过滤分组。

select cust_id,count(*) as orders from orders group by cust_id having count(*)>=2;

技术分享图片

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

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

技术分享图片

分析:where子句过滤所有prod_price至少为10 的行,然后按照cend_id 分组,having子句过滤计数为2或2以上的分组。

 

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

技术分享图片

 4、分组和排序

select order_num,sum(quantity*item_price) as ordertotal 
from orderitems 
group by order_num 
having sum(quantity*item_price)>=50;

技术分享图片

 

select order_num,sum(quantity*item_price) as ordertotal 
from orderitems 
group by order_num 
having sum(quantity*item_price)>=50 
order by ordertotal;

技术分享图片

 

5、select子句顺序

下列表是在使用select语句时必须遵循的次序

select
from
where
group by
having
order by
limit

 

MySQL--分组数据

标签:顺序   use   技术   现在   ble   级别   连接数据库   ima   count   

原文地址:https://www.cnblogs.com/dataAnalysis/p/9589147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!