我有2个表中的数据,我想创建一个报告。
表A:
表B:
两个表都有更多,但这些是相关的列。
我想在概念上运行的查询是这样的:
select TableA.name, avg(TableB.grade) where TableB.tableAID = TableA.tableAID
问题当然是我正在使用聚合函数(avg),我可以像这样重写它:
select avg(grade), tableAID from TableB group by tableAID
但是我只得到TableA的ID,而我真的需要TableA中出现的名称列,而不仅仅是ID。
是否可以在一个语句中编写查询来执行此操作,或者我是否首先需要执行我列出的第二个查询,获取id的列表,然后在TableA中查询名称列中的每个记录...似乎对我来说,我在这里遗漏了一些明显的东西,但我(很明显)不是一个sql大师...
答案 0 :(得分:3)
你可以这样做:
SELECT avg(b.grade), a.tableAID, a.name
FROM TableA a
JOIN TableB b
ON b.tableAID = a.tableAID
GROUP BY a.tableAID, a.name
只需将其添加到群组中就可以正常使用。
答案 1 :(得分:2)
SELECT AVG(TableB.grade), TableB.tableAID, TableA.Name
FROM TableA INNER JOIN TableB
ON TableA.TableAID = TableB.TableAID
GROUP BY TableA.tableAID, TableA.Name
答案 2 :(得分:0)
替代答案:
SELECT AVG(b.grade), a.tableAID, MAX(a.name )
FROM TableA a
JOIN TableB b
ON b.tableAID = a.tableAID
GROUP BY a.tableAID
只是为了让你思考。