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

2020-09-15 11:23:53 浏览数 (1)

文章目录

  • 题目
  • 数据表
  • 分析
  • 代码
    • 运行结果

题目


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

数据表


链接:spj库

分析


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

代码语言:javascript复制
select 
	sno,
	jno,
	sum(qty) qty
	from spj
	group by jno,sno

结果如下表所示:

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

代码语言:javascript复制
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即可。

代码


代码语言:javascript复制
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

0 人点赞