SQL多表查询实战:生成项目统计表,统计项目使用零件情况

本文以一个简单的SPJ数据库为例,介绍如何使用SQL语句进行多表查询,生成项目统计表。

数据库表结构

假设我们有一个SPJ数据库,包含以下四个关系:

  • 供应商表(S): 供应商代码(Sno), 供应商姓名(Sname), 供应商所在城市(City), 可供货状态(Status)* 零件表(P): 零件代码(Pno), 零件名(Pname), 颜色(Color), 重量(Weight)* 工程项目表(J): 工程项目代码(Jno), 项目名称(Jname), 项目所在城市(City)* 供应情况表(SPJ): 供应商代码(Sno), 零件代码(Pno), 工程项目代码(Jno), 供货数(Qty)

项目需求

我们需要生成一个项目统计表,该表包含以下信息:

  • 所有工程项目的编号和名称* 项目所在的城市* 项目使用的每种零件号及其总数量

报表生成思路

要生成项目统计表,我们需要进行以下步骤:

  1. 关联查询: 将工程项目表(J)、供应情况表(SPJ)和零件表(P)关联起来,以便获取每个项目使用的每种零件的信息。2. 分组聚合: 使用GROUP BY子句对项目编号、项目名称、项目所在城市和零件号进行分组,并使用SUM函数计算每种零件的总数量。

SQL语句

以下是生成项目统计表的SQL语句:sqlSELECT J.Jno, J.Jname, J.City, P.Pno, SUM(SPJ.Qty) AS '总数量'FROM JJOIN SPJ ON J.Jno = SPJ.JnoJOIN P ON SPJ.Pno = P.PnoGROUP BY J.Jno, J.Jname, J.City, P.Pno;

代码解读:

  • 我们使用三个表(J, SPJ, P)进行连接查询。* 连接条件是: J.Jno = SPJ.Jno 和 SPJ.Pno = P.Pno,确保我们获取的是同一个项目使用的零件信息。* GROUP BY 子句根据项目和零件进行分组。* SUM(SPJ.Qty) 计算每个项目每种零件的总数量。

运行结果示例

假设数据库中有以下数据,运行上述SQL语句后,将得到如下结果:

+-----+--------------+-------+-----+---------+| Jno | Jname | City | Pno | 总数量 |+-----+--------------+-------+-----+---------+| J01 | 项目1 | 北京 | P01 | 50 || J01 | 项目1 | 北京 | P02 | 30 || J01 | 项目1 | 北京 | P03 | 20 || J02 | 项目2 | 上海 | P01 | 40 || J02 | 项目2 | 上海 | P03 | 10 || J03 | 项目3 | 北京 | P02 | 25 || J03 | 项目3 | 北京 | P03 | 15 |+-----+--------------+-------+-----+---------+

总结

本文介绍了如何使用SQL语句进行多表查询,并以生成项目统计表为例,详细讲解了如何关联查询和使用聚合函数。希望本文能帮助你更好地理解和使用SQL进行数据分析。


原文地址: https://www.cveoy.top/t/topic/buI7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录