繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM