【发布时间】:2019-02-13 19:42:04
【问题描述】:
如果我们有以下两个表,“teachers”和“classes”,我们如何使用 INNER JOIN 语句生成最终表,其中 (i) “class_count” 必须至少为 2 才能包含教师在决赛桌中,并且 (ii) 一个班级的“评分”必须至少为 50 才能计入“平均评分”计算?
“教师”表
teachers
class_id teacher_id teacher_name class_count
1111 1234 Smith 2
4444 2345 Jones 3
2222 1234 Smith 2
5555 2345 Jones 3
3333 5678 Taylor 2
6666 2345 Jones 3
7777 5678 Taylor 2
8888 6789 Thomas 1
“类”表
classes
id class_name rating
1111 Math 60
2222 Biology 70
3333 Psychology 50
4444 Physics 80
5555 Chemistry 30
6666 Economics 60
7777 Computing 70
8888 Statistics 90
我们希望决赛桌看起来像:
teacher_id teacher_name average_rating
1234 Smith 65
2345 Jones 70
5678 Taylor 60
我在 sqlite 中尝试了以下代码,但没有给出正确的结果(如上面的最终表格所示)。
SELECT t.teacher_id, t.teacher_name, SUM(c.rating) / t.class_count
FROM teachers t
INNER JOIN classes c on c.id = t.class_id
WHERE c.rating >= 50 AND t.class_count >= 2;
【问题讨论】:
-
你能详细说明“没有工作”吗?你有错误吗?结果错误?
-
得到错误的结果
-
愿意分享吗?
-
嗨。当您研究 re SUM 时,您遇到了 GROUP BY。探索如何?你可以用它做什么部分?为什么不提?请阅读并根据点击谷歌搜索“stackexchange 作业”采取行动。另外:这是一个常见问题解答。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用一个变体搜索您的标题和关键字作为您的标签。请参阅向下投票箭头鼠标悬停文本。还有minimal reproducible example.
标签: sql join sqlite inner-join