我有供应商 - 项目 - 零件数据库。我已经为查询编写了一个代码:“获取项目编号和该项目提供的零件的平均值” 我已经使用GROUP BY完成了这项工作。我想知道如果没有GROUP BY我是否可以做到这一点。
数据库:
SUPPLIER(SNUMBER, SNAME, STATUS, CITY)
PROJECT(JNUMBER, JNAME, CITY)
PART(PNUMBER, PNAME, CITY, COLOR, WEIGHT)
SPJ(SNUMBER, PNUMBER, JNUMBER, QUANTITY)
编辑1:我编辑了查询。查询为:“获取该项目提供的零件的项目编号和重量的平均值。每个提供的零件必须计算一次。”
答案 0 :(得分:1)
您可以使用相关子查询来计算聚合值:
SELECT JNumber,
(SELECT SUM(Quantity * Weight) / SUM(Quantitiy)
FROM SPJ
JOIN Part USING (PNumber)
WHERE JNumber = Project.JNumber
) AS AvgParts
FROM Project
这通常与使用GROUP BY的连接一样快,但稍微复杂一些。