2

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

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

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

4 回答 4

5

只需使用MAX()

SELECT ID, MAX(HOUR) Max_hour
FROM   TableName
GROUP  BY ID
于 2013-05-15T15:17:58.223 回答
2

这是解决方案

SELECT ID, MAX(HOUR) as Maxhour FROM Table1 GROUP BY ID

于 2013-05-15T15:19:55.440 回答
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
于 2013-05-15T15:22:57.217 回答
0

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

select * from tablename t1 where t.hour = (select max(hour) from tablename t2 where t2.id = t1.id)

于 2013-05-15T15:24:44.990 回答