我向我提出了以下问题:
"编写一个SQL命令,以显示平均结果大于60的每个学生,学生的姓名,学生在所有考试中的总尝试次数以及学生的平均结果。 #34;
我正在为此工作的表是: 标记,字段为examID(PK),studentID(PK),结果,发生,noOfAttempts
带有字段ID(PK)和姓名的学生。
标记中的StudentID字段也是Student的外键。
无论如何,这是我到目前为止所提出的:
SELECT S.name, AVG(M.RESULT) FROM STUDENT S, MARK M
WHERE S.ID = (
SELECT studentID FROM
MARK
WHERE 60 <
(SELECT AVG(result) from MARK));
但这让我感到不舒服,而不是单一的群体功能&#34;错误。我尝试过使用其他一些连接,但这也导致了大量的错误,所以我很确定我做错了。
此时我几乎完全迷失了。我知道&#34;最深的&#34;子查询将返回平均结果大于60的学生ID,但当我尝试返回与该特定ID匹配的所有学生ID时,它不起作用。我也不确定如何计算总数。尝试在这个查询,所以我现在甚至没有尝试过。
答案 0 :(得分:0)
你可以尝试这样的事情:
SELECT
S.name, SUM(M.noOfAttempts) AS attempts, AVG(M.RESULT) AS result
FROM
STUDENT S
INNER JOIN
MARK M ON (S.ID = M.studentID)
GROUP BY
S.ID, S.name
HAVING
AVG(M.RESULT) > 60