簡體   English   中英

SQL-無法使分組查詢正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM