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

運行結果

在這裏插入圖片描述
你的點贊將會是我最大的動力

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