SQL-查询各工程项目使用所提供零件最多的供应商

题目

本题目要求编写SQL语句,在SPJ数据库中,查询各工程项目使用所提供零件最多的供应商。

数据表

链接:spj库

分析

1.先统计各工程项目(jno)的各供应商(sno)提供的零件数量和(sum(qty)),记作派生表x:

select 
	sno,
	jno,
	sum(qty) qty
	from spj
	group by jno,sno

结果如下表所示:
在这里插入

2.再从表x中选出每个工程(group by jno)使用最多的零件。

select 
	jno,
	max(qty) qty
	from 
		(select 
		sno,
		jno,
		sum(qty) qty
		from spj
		group by jno,sno)as x
	group by jno
	order by jno

结果如下表所示:
在这里插入图片描述
3.然而事情并没有结束,题目还要求输出sno,而sno又没出现在聚集函数或group by 中,那么可以再嵌套一层查询,将第2点记为表y,使用相关子查询x.jno=y.jno即可。

代码

select 
	jno,
	sno,
	qty
	from 
		(select 
		sno,
		jno,
		sum(qty) qty
		from spj
		group by jno,sno)as x
	where x.qty=
		(select max(qty)
		from
			(select 
			jno,
			sum(qty) qty
			from spj
			group by jno,sno)as y
		where x.jno=y.jno
		)
	order by jno

运行结果

在这里插入图片描述
你的点赞将会是我最大的动力

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章