我意识到问题的标题比问题本身困难得多。
基本上我有一个像这样的数据集:
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
有什么想法吗?
答案 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)