比较mysql中的平均值

时间:2012-12-29 13:10:33

标签: mysql sql

我有两张桌子;一个包含学生namessids,另一个包含sids of students及其grades的“获取”表。

我想要显示平均大于学生姓名“Peter-Parker”的学生的姓名。

我已经尝试过以下查询,但它不起作用。

SELECT s.sid, s.fname, s.lname
FROM student s, take t
WHERE s.sid = t.sid AND AVG(t.grade) > ALL(
SELECT AVG(grade)
FROM take, student
WHERE student.fname = 'Ali' and student.lname='Demir');
 WITH AliAv(avg) AS
 (SELECT AVG(grade) from take t, student s
 where t.sid = s.sid ands.fname = 'Ali' and s.lname = 'Demir')
 select student.sid, student.fname, student.lname
 from student, take
 where student.sid = take.sid Group by student.sid
 having avg(take.grade) > AliAv.av;

2 个答案:

答案 0 :(得分:1)

SELECT s.sid, s.fname, s.lname, AVG(t.grade) AS average
FROM student AS s
JOIN take AS t ON t.sid = s.sid
GROUP BY s.sid
HAVING average > (
    SELECT AVG(t2.grade)
    FROM student AS s2
    JOIN take AS t2 ON t2.sid = s2.sid
    WHERE s2.fname = 'Peter' and s2.lname = 'Parker'
)

答案 1 :(得分:0)

这适用于SQL Server,我不知道MySQL中的语法是否有效:

SELECT *
FROM Student s
WHERE
  (SELECT AVG(Grade) FROM Take WHERE SID=s.ID) > (SELECT AVG(Grade) FROM Take WHERE SID = (SELECT SID FROM Student WHERE FName='Peter' AND LName='Parker'))