在SQL中,如何比较同一表中两行的值,找到最高值,然后选择其整行



我有一个表,我需要在"时间"列中选择每季度小时"得分值"最高的行。例如,在凌晨1点,有两条记录的"评分值"分别为8和2,因此我只需要选择"得分值"最高的行,即8。我尝试使用Row_Number((在(partitionby…(上添加列"Row Number",但不确定如何使用此列来选择每季度小时的最高得分值。表格结构的屏幕截图附在下面带有数据的表格

您可能错过了在row_number((中使用DESC排序

With ct as (
select *, ROW_NUMBER() over (partition by [Time] order by [Scoring value] desc) rn 
from  Table1)
Select * from ct where rn=1

我不确定列名是否可以有空间。无论如何,不使用row_number,也可以使用连接到具有如下结构/模式的子查询来完成:

select a.* from table_name a
inner join (
select time, max(scoring_value) as max_score from table_name group by time
) b on a.time = b.time and a.scoring_value = b.max_score

你已经成功了90%。

假设SQL服务器(您没有说(然后:

;with r as (
select <columnList>, 
row_number() over(partition by <qtr hour column> order by Score desc) rn
from table
)
select * from r where rn=1

如果您没有qtr小时列,请使用类似的内容

datepart(hour,timeColumn)*100+datepart(minute,timecolumn)/15 

最新更新