【发布时间】:2019-10-13 13:24:16
【问题描述】:
三个表:
- 活动
- 匹配项
- 收视率
每个匹配项都与一个活动相关联(AID 作为外键)。每个活动都有多个评论。
我正在尝试计算每个活动关联的匹配数:
SELECT MATCHES.AID, Count(MATCHES.AID) AS CountOfAID
FROM ACTIVITIES INNER JOIN MATCHES ON ACTIVITIES.AID = MATCHES.AID
GROUP BY MATCHES.AID;
返回这个就好了:
但是,一旦我添加了内部连接,还包括每个活动的平均评分:
SELECT ACTIVITIES.[Activity Name], Count(MATCHES.AID) AS CountOfAID,
Avg(RATINGS.Rating) AS AvgOfRating
FROM (ACTIVITIES INNER JOIN MATCHES ON ACTIVITIES.AID = MATCHES.AID) INNER
JOIN RATINGS ON ACTIVITIES.AID = RATINGS.AID
GROUP BY ACTIVITIES.[Activity Name];
发生这种情况:
我该如何解决这个问题?
【问题讨论】:
-
这是一个常见的错误,人们希望在某些聚合的共享键上加入(每个都可能涉及加入),但他们错误地尝试进行所有加入,然后对之前的聚合进行所有聚合或聚合。在聚合之前查看连接。请在代码问题中提供minimal reproducible example--cut & paste & runnable code;具有期望和实际输出的示例输入(包括逐字错误消息);明确的规范和解释。这包括您可以提供的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)
-
请use text, not images/links, for text--including tables & ERDs. 转述或引用其他文本。仅将图像用于无法表达为文本或增强文本的内容。无法搜索或剪切和粘贴图像。在图片中包含图例/键和说明。