我有2个表(等级,课程),我需要找到COURSE_ID,其中所有课程等级的最高平均成绩
示例:
DBASE COURSE GRADES : 90,60,90,100 (AVGERAGE=85)
DSTRUCT COURSE GRADES : 100,100,100,100 (AVERAGE=100)
C# COURSE GRADES : 50,50,60,60 (AVERAGE = 55)
所以我应该得到课程的COURSE_ID
(DSTRUCT),它是所有平均值的最大平均值
所以我有这个代码(我没有写它),我需要写它而不指定“c”和“g”和“g1”
SELECT g.course_id
FROM (SELECT course_id, avg(grade) AS average FROM grades GROUP BY course_id) g
WHERE g.average = (
SELECT max(g1.average)
FROM (SELECT course_id, avg(grade) AS average FROM grades GROUP BY course_id) g1
);
答案 0 :(得分:2)
我不建议这样做,但这是我能想到的唯一方式,符合你所规定的极端标准。对于将来需要这个的人,请查看我的其他答案,而不是这个答案。
SELECT course_id, AVG(grade)
FROM grades
GROUP BY course_id
HAVING AVG(grade) >= ALL (
SELECT AVG(grade)
FROM grades
GROUP BY course_id )
答案 1 :(得分:1)
SELECT course_id, AVG(grade)
FROM grades
GROUP BY course_id
ORDER BY AVG(grade) DESC
LIMIT 1
答案 2 :(得分:0)
这可以是你的答案
SELECT course_id
FROM (SELECT course_id, AVG(grade)
FROM grades
GROUP BY course
ORDER BY AVG(grade) DESC)
WHERE rownum = 1;