2016-01-24 44 views
0

我有以下问题提交给我:SQL - 不知道我是否应该使用连接来解决这个查询

“写SQL命令来显示谁具有大于60的平均结果每名学生中,学生的姓名,学生在所有考试中的总尝试次数,以及学生的平均成绩。“

我一起工作的这个表是: 马克,与场examID(PK),studentID(PK),结果发生,noOfAttempts

并与域ID(PK)和名学生。

mark中的字段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)); 

但它igiving我“不是一个单一的分组功能”的错误。我尝试过使用其他一些连接,但这也导致了大量的错误,所以我很确定我做错了。

在这一点上,我几乎完全失去了。我知道“最深”的子查询会给我返回平均结果大于60的学生ID,但是当我尝试返回与该特定ID匹配的所有学生ID时,它不起作用。我也不确定如何计算总数。在这个查询中的尝试,所以我没有尝试,现在。

表数据: Mark

Student

回答

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 
+0

Lashane,同时它还是正确选择两个学生指定的结果,似乎去从那时起有点干扰。我为琼斯获得的尝试次数是5次,当它应该是2时,他的平均结果也是关闭的。奇怪的是,第二个学生,TAO,它确实做到了一切。 –

+0

@MateuszJ你可以在两个表格中编辑问题和发布数据吗? –

+0

如果有帮助,我添加了两张表的屏幕大小。 –

相关问题