【问题标题】:SQL Take Max and Include Non-Group By COLSSQL Take Max and Include Non-Group By COLS
【发布时间】:2022-12-23 23:18:58
【问题描述】:
TABLE1
ID  STUDENT SCORE   TIME
A   1   9   1
A   1   8   2
B   1   0   1
B   1   10  2
B   1   7   3
C   2   5   1
C   2   1   2
C   2   0   3
D   3   1   1
E   3   0   1
D   3   4   2
D   3   4   3
E   3   9   2
            
            
            
            
            
            
            
WANT
ID  STUDENT MAXSCORE    TIME
A   1   9   1
B   1   10  2
B   1   7   3
C   2   5   1
C   2   1   2
C   2   0   3
D   3   1   1
E   3   9   2
D   3   4   3

我有 TABLE1 并希望 WANT 这样做: 对于每个学生/时间,选择具有 MAX(SCORE) 的行

我试试这个::

select ID, STUDENT, MAX(SCORE) AS MAXSCORE, TIME
from TABLE1
group by STUDENT, TIME

但无法包含 ID

【问题讨论】:

    标签: sql group-by


    【解决方案1】:

    首先按学生/时间获得最高分数,然后返回原始表。

    WITH dat
    AS
    (
    SELECT student, time, MAX(score) AS max_score
    FROM TABLE1
    GROUP BY student, time
    )
    SELECT t.*
    FROM TABLE1 t
    INNER JOIN dat d 
    ON t.student = d.student AND t.time = d.time AND t.score = d.max_score;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 2012-07-25
      • 2020-01-19
      • 2014-05-06
      • 2020-08-12
      相关资源
      最近更新 更多