MySQL-分组查询

1.分组函数

 

需求20:查询所有商品平均零售价
SELECT AVG(salePrice) FROM product

需求21:查询商品总记录数
SELECT COUNT(id) count FROM product

需求22:查询分类为2的商品总数
SELECT COUNT(id) count FROM product WHERE dir_id=2;

需求23:查询商品的最小零售价,最高零售价,以及所有商品零售价总和
SELECT MIN(salePrice) 最小零售价,MAX(salePrice) 最高零售价,SUM(salePrice)零售价总和
FROM product

 

2.分组查询

 

 栗子1:查询每个商品的分类编号和每个商品分类各自的平均零售价

SELECT dir_id,AVG(salePrice)
FROM product
GROUP BY dir_id;

栗子2:查询每个商品分类编号和每个商品分类各自的商品总数

SELECT dir_id,COUNT(id) FROM product GROUP BY dir_id;

栗子3:查询每个商品分类编号和每个商品分类中零售价大于100的商品总数

SELECT dir_id,COUNT(id) FROM product WHERE salePrice >100 GROUP BY dir_id;

3.HAVING子句(对分组之后的结果做过滤)

HAVING子句通常和GROUP BY子句一起使用,用来限制搜索条件。HAVING子句与组有关,不与单个值有关,它会作用于GROUP BY创建的组。

HAVING子句是可选的,不能单独使用,只能配合GROUP BY子句使用,作用是对GROUP BY子句设置条件,对统计后的结果进行限制。

栗子4:查询每个商品分类编号和每个商品分类中零售价大于100的商品总数,商品总数大于5的分类

SELECT dir_id,COUNT(id)
FROM product
WHERE salePrice >100
GROUP BY dir_id
HAVING COUNT(id)>5;

 

栗子5:查询零售价大于100的商品零售价总和大于1500的商品分类编号以及总零售价和

SELECT dir_id,SUM(salePrice) sum
FROM product
WHERE salePrice>100
GROUP BY dir_id
HAVING sum>1500

posted @ 2016-11-08 16:56  GumpYan  阅读(664)  评论(0编辑  收藏  举报