MySQL连接查询——连接查询的综合应用

连接查询的综合应用

连接查询的综合应用要求不仅能熟练掌握内连接查询、外连接查询、多表连接查询,还要学会运用聚合函数、分组查询来实现复杂的查询需求。
下面通过几个例子来体会连接查询综合应用的强大功能

示例1:计算每条公交线路的司机人数,并显示司机人数大于 3 的分组信息,按司机人数逆序显示
分析:连接驾驶员表、车辆表和线路表,再在此基础上将司机人数大于 3 的分组数据过滤出来

SELECT
	lineNo '线路号',
	COUNT(*) '司机数' 
FROM
	line l,
	driver d,
	vehicle v
WHERE
	l.lineID = v.lineID
AND d.driverID = v.driverID
GROUP BY
	lineNo
HAVING COUNT(*) > 3
ORDER BY
	司机数 DESC;

执行结果如图
在这里插入图片描述
利用聚合函数COUNT()来计算司机数,用GROUP BY以线路号分组,HAVING过滤司机人数大于3的分组数据,ORDER BY的DESC(降序)实现司机数降序的排列
其中还使用了简单的多表连接将驾驶员表、车辆表和线路表三表连接查询

示例2:计算每个订单的金额,要求按照订单下单日期升序和订单金额降序显示订单 ID、订单下单日期、订单金额和顾客姓名
分析:由于需要统计每件商品的销售数量和销售金额,即便某种商品没有被订购过也需要显示,所以可以采用左外连接的方式依次建立商品表和订单明细表的联系

SELECT
	goodsName '商品名',
	SUM(quantity) '销售量',
	SUM(quantity * unitPrice) '销售金额'
FROM
	goods g
LEFT JOIN ordersdetail od ON g.goodsID = od.goodsID
GROUP BY
	g.goodsID
ORDER BY
	销售量,
销售金额

执行结果如图
在这里插入图片描述
某种商品没有被订购过也需要显示,注意要用外连接。
其中使用了聚合函数SUM()计算销售量与销售金额

连接查询的综合应用就是在连接查询的基础之上灵活使用聚合函数和分组查询以及MySQl函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值