[英]SQL: Select a row only if that cell has the max value given the ID
我意识到问题的标题比问题本身困难得多。
基本上我有一个像这样的数据集:
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)作为Maxhour,来自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
或者,如果您想使其变得更复杂^^,可以采用以下方法:
从表名t1中选择*,其中t.hour =(从表名t2中选择max(hour),其中t2.id = t1.id)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.