SQL - 不确定是否应该使用联接来解析此查询

时间:2016-01-24 15:56:04

标签: sql

我向我提出了以下问题:

"编写一个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时,它不起作用。我也不确定如何计算总数。尝试在这个查询,所以我现在甚至没有尝试过。

表数据: Mark

Student

1 个答案:

答案 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