題目
本題目要求編寫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
運行結果
你的點贊將會是我最大的動力