三個表:用戶,問題和回答幫助在複雜的MySQL查詢
表答了列:AnswerID,用戶名,QuestionID和分數。
用戶可以多次提交問題的回答。但是,如果僅將他在這個問題上獲得的最高分數排在第一位,
現在我需要獲得排名(UserID,總積分)。如何編寫查詢?
謝謝!
三個表:用戶,問題和回答幫助在複雜的MySQL查詢
表答了列:AnswerID,用戶名,QuestionID和分數。
用戶可以多次提交問題的回答。但是,如果僅將他在這個問題上獲得的最高分數排在第一位,
現在我需要獲得排名(UserID,總積分)。如何編寫查詢?
謝謝!
我不知道您的查詢的全部範圍內的,但這樣的事情應該有所幫助:
SELECT QuestionID, UserID, MAX(Score) FROM Answer GROUP BY UserID, QuestionID
編輯
基於OP評論,查詢應該更多這樣的:
SELECT UserID, SUM(SELECT Max(Score) FROM Answer GROUP BY UserID, QuestionID) AS TotalScore GROUP BY UserID
說實話,我不知道,如果查詢是100%正確的,所以你可能無法得到你想要的確切結果,但基本的米是正確的。
但僅排名最高 得分,他賺取的問題時,應 計算。
在此基礎上我的理解是,你希望每個問題的最高得分爲每一位用戶,然後對他們進行排名
SET @rank=0;
SELECT
UserId,
Sum(Points) as TotalPoints,
Rank
FROM
(
SELECT UserID,MAX(Score) as Points,(@rank:[email protected]+1) as Rank from Answer
group by UserID,questionId
order by Points
) as d1
group by d1.UserId
有關使用子查詢這樣的內容:
SELECT UserId, SUM(
SELECT MAX(SCORE) FROM Answer a
WHERE a.uestionId = q.questionId)
FROM Question q
WHERE q.userId = 1234
Group by userid
相關子查詢<=>表現豬 – Mchl 2010-11-12 17:57:39
首先選擇得分最高的答案,然後計算總分數。
SELECT
UserID, SUM(Score) AS TotalPoints
FROM (
SELECT
UserID, QuestionID, MAX(Score) AS Score
FROM
Answer
GROUP BY
UserID, QuestionID
) AS sq
GROUP BY
UserId
+1,這將是要走的路 – 2010-11-12 17:59:25
排名在此缺失.. – Vishal 2010-11-12 18:10:01
我認爲他想的MAXS的每個問題 – 2010-11-12 17:51:19
GAH你的總和好吧,我會編輯 – 2010-11-12 17:53:49
我需要這樣的東西:SELECT SUM(MAX(分數)),用戶名從組....通過UserID,問題ID – lonelyloner 2010-11-12 17:54:12