MYSQL 学习笔记记录整理之二:分组数据

本文介绍了SQL中分组查询的基础语法及应用案例,包括如何使用GROUP BY进行数据分组,利用HAVING过滤分组结果,以及如何结合ORDER BY进行排序输出。通过具体实例展示了这些功能的实际应用场景。
1、创建分组
GROUP BY
SELECT ven_id,COUNT(*) AS num_prods FROM products GROUP BY ven_id;
注意:
GROUP BY可以包含任意数目的列
GROUP BY列出的每个列都必须是检索列或者有效的表达式(但不能是聚集函数)。如果在SELECT语句中使用表达式,则必须在GROUP BY中指定相同的表达式,不能使用别名。
除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出。
GROUP BY必须出现在WHERE语句之后,ORDER BY语句之前。
 
2、过滤分组
HAVING过滤分组,WHERE过滤行。
SELECT cust_id ,COUNT(*) AS orders
FROM orders GROUP BY cust_id
HAVING COUNT(*) >=2;
COUNT(*) >=2--过滤2个以上的订单分组
 
 
例子:列出具有2个(含)以上、价格为10(含)以上的产品的供应商
SELECT cust_id ,COUNT(*) AS num_prods
FROM products
WHERE prod_price>=10
GROUP BY ven_id
HAVING COUNT(*) >=2;
 
3、分组和排序
例子:检索总订单价格大于等于50的订单号和总计订单价格
SELECT order_num,SUM(quantiy*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantiy*item_price)>=50;
 
 
为按总计订单价格排序输出,需要添加ORDER BY语句,如下:
SELECT order_num,SUM(quantiy*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantiy*item_price)>=50
ORDER BY ordertotal;
 

转载于:https://www.cnblogs.com/by170628/p/7944493.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值