GROUP BY 语句根据一个或多个列对结果集进行分组。
建立一张表
create table orders(
id int,
product varchar(20),
price float
);
insert into orders(id,product,price) values(1,'电视',900);
insert into orders(id,product,price) values(2,'洗衣机',100);
insert into orders(id,product,price) values(3,'洗衣粉'90);
insert into orders(id,product,price) values(4,'电视',900);
insert into orders(id,product,price) values(5,'洗衣粉'90);
insert into orders(id,product,price) values(6,'洗衣粉'90);
对订单表中商品归类后,显示每一类商品的总价
select product,sum(price) from orders group by product;
--已经把原来的一组数据,现在分成了三组。在统计数据的时候,以组为单位
查询购买了几类商品,并且每类总结大于100的商品
select product,sum(price) from orders group by product having sum(price) >100;
查询购买了几类商品,并且商品的价格需要大于100,每类总价大于100的商品
select product,sum(price) from orders where price > 100 group by product having sum(price) > 100;
- 注意
使用where的条件,如果有分组,where的条件是分组之前的条件。
新的关键字,having关键字进行分组的条件过滤。
总结
where关键字后不能使用聚集函数,而having可以使用聚集函数!!!