[英]SQL - Can't get grouping query to work
我有兩個表(MS Access)
tblInput
Event, UserID, Score EventA, 1, 50 EventA, 2, 55 EventB, 1, 45 EventB, 2, 33
tblUser
ID, Name 1 , John 2 , Alex
我需要顯示每個事件的獲勝分數,事件和人員姓名。 此示例的輸出應為
Event, Name, Score EventA, Alex, 55 EventB, John, 45
我已經嘗試過這樣做來獲得賽事和最高分:
SELECT Max(Score), Event FROM tblInput GROUP BY Event;
但是,如果我嘗試選擇ID
(我只是用它代替名稱,可以在連接表時改回名稱),那么我將不得不使其成為我不希望使用的聚合函數,或將其放在“分組依據”語句中,我會得到類似
SELECT Max(Score) AS Score, Event, ID FROM tblInput GROUP BY Event, ID;
Score, Event, ID 165 EventA 2 173 EventA 9 170 EventA 32 211 EventB 10 224 EventB 14 256 EventC 16 188 EventC 17
感謝您提供任何幫助,對不起,格式化不正確。
創建一個這樣的查詢:
SELECT
Max(Score) as topscore,
ChildEvent
FROM
T_Participation
GROUP BY ChildEvent
然后,使用第一個查詢構建的第二個查詢和您的輸入表在事件和得分上均連接在一起:
select
childEvent,
topscore,
StudentID
from
query1 q inner join
t_participation p on
q.childevent = p.childevent and
q.topscore = p.score
如果您的得分最高的用戶超過一個,該怎么辦? 與事件A一樣,用戶3的得分為55?
這是一種您可以在一個語句中完成的方法。 您需要創建一個事件表及其最大分數。 然后將該表重新連接到您的Input表。 您的示例的表名稱為T_Input,但是您的實現使用T_Participation。 請用正確的表名T_Input代替T_Participation。
SELECT T.EVENT, T.Score, U.Name
FROM T_Input T
INNER JOIN T_User U ON T.UserID = U.UserID
INNER JOIN
(
SELECT Event, MAX(Score) [Score]
FROM T_Input T2
INNER JOIN T_User U2 ON T2.UserID = U2.UserID
GROUP BY EVENT
)Top_scores ON T.EVENT = Top_scores.EVENT AND T.Score = Top_Scores.Score
你可以做:
SELECT T_Input.Event, T_User.Name, T_Input.Score
FROM
(SELECT Max(Score), Event FROM T_Input GROUP BY Event) AS maxScores,
T_User,
T_Input
WHERE maxScores.score = T_Input.score
AND maxScores.Event = T_Input.event
AND T_User = T_Input.UserId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.