本题目要求编写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
原创不易,请勿转载(
本不富裕的访问量雪上加霜) 博主首页:https://blog.csdn.net/qq_45034708