[英]How can I get the average of the top N rows of a SQL query?
我正在努力
SELECT AVG(q."level")
FROM "Questions" q, "QuestionScores" qs
WHERE qs."QuestionId" = q."id"
AND qs."StudentId"=13
AND q."TopicId" = 45
AND qs."version" = 8
ORDER BY qs."score" DESC
LIMIT 3
但是它說我需要在GROUP BY中使用qs."score"
或者在聚合函數中使用。 我想要的是平均排名前三的問題級別(按分數排名)。
您需要先使用子查詢獲取前n行, 然后獲得平均值:
SELECT AVG(level) FROM (
SELECT q.level
FROM Questions q, QuestionScores qs
WHERE qs.QuestionId = q.id
AND qs.StudentId=13
AND q.TopicId = 45
AND qs.version = 8
ORDER BY qs.score DESC
LIMIT 3
) x
我建議你使用現代(超過25年)的join
語法:
SELECT AVG(level) FROM (
SELECT q.level
FROM Questions q
JOIN QuestionScores qs ON qs.QuestionId = q.id
WHERE qs.StudentId=13
AND q.TopicId = 45
AND qs.version = 8
ORDER BY qs.score DESC
LIMIT 3
) x
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.