我意识到问题的标题比问题本身要困难得多。
基本上我有一个像这样的数据集:
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
有任何想法吗?
我意识到问题的标题比问题本身要困难得多。
基本上我有一个像这样的数据集:
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
有任何想法吗?
只需使用MAX()
SELECT ID, MAX(HOUR) Max_hour
FROM TableName
GROUP BY ID
这是解决方案
SELECT ID, MAX(HOUR) as Maxhour FROM Table1 GROUP BY ID
如果您实际上想要选择同一行上的其他列,那么简单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
或者,如果你想让它更复杂^^这是要走的路:
select * from tablename t1 where t.hour = (select max(hour) from tablename t2 where t2.id = t1.id)