SQL:仅当该单元格具有给定ID的最大值时才选择行

时间:2013-05-15 15:17:09

标签: sql

我意识到问题的标题比问题本身困难得多。

基本上我有一个像这样的数据集:

ID  Hour
01  1
01  2
01  3
02  1
02  2
03  1
03  2
03  3
03  4

数据集指的是正在玩游戏的人。当然,ID是主题的ID,而“小时”是指在该小时的比赛中发生的事情。现在,我想仅选择引用该播放器播放的最后一小时的行

那样:

ID  Hour
01  3
02  2
03  4

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

只需使用MAX()

即可
SELECT ID, MAX(HOUR) Max_hour
FROM   TableName
GROUP  BY ID

答案 1 :(得分:2)

这是解决方案

SELECT ID,MAX(HOUR)为Maxhour 从表1 GROUP BY ID

答案 2 :(得分:0)

如果您确实想要在同一行上选择其他列,那么简单的group by / max解决方案就无法正常工作。

适用于任何支持窗口功能的数据库的解决方案是:

select t.*
from (select t.*,
             row_number() over (partition by id order by hour desc) as seqnum
      from TableName t
     ) t
where seqnum = 1

答案 3 :(得分:0)

或者,如果你想让它更复杂,因为它是^^这是要走的路:

选择* 来自tablename t1 其中t.hour =(从tablename t2中选择max(hour),其中t2.id = t1.id)