从我的结果中获取行号
Getting row number from my results
今晚我的大脑不工作了!
数据
Id int, Name varchar, Tag varchar, MilesAway decimal(9,6)
我正在尝试将 row_number
添加到我的结果集中,但我想忽略由标记引起的重复行。这是预期的输出:
- 1 Blah Red 6.3 -> 所需输出:1
- 1 Blah Stripe 6.3 -> 所需输出:1
- 19 SomethingElse Red 12.1 -> 所需输出:2
- 19 SomethingElse Straight 12.1 -> 所需输出:2
- 5 Hello Red 15.9 -> 所需输出:3
- 42 再见红 55.0 -> 所需输出:4
所以,我应该得到结果编号 1、2、3、4。这是我编写查询的方式:
select Id,
Name,
Tag,
MilesAway,
row_number() over (order by MilesAway)
from table t
group by Id,
Name,
Tag,
MilesAway
我也试过将 partition by
添加到除标记之外的所有列。我知道这一点,我已经写了数百篇,为什么我感到困惑(除了午夜!)?
编辑:我想忽略 1 号地点有 2 条记录的事实,并且仍然希望下一条是 2,而不是 3。
您正在寻找dense_rank
:
select Id,
name,
Tag,
MilesAway,
dense_rank() over (
order by MilesAway
)
from table t;
select Id,name,Tag,MilesAway,
dense_rank() 在 (
通过 MilesAway 订购
) 来自 table ;
试一试
select Id, name,Tag, MilesAway, dense_rank() over ( order by MilesAway)
from table t
group by Id, Name,Tag, MilesAway
今晚我的大脑不工作了!
数据
Id int, Name varchar, Tag varchar, MilesAway decimal(9,6)
我正在尝试将 row_number
添加到我的结果集中,但我想忽略由标记引起的重复行。这是预期的输出:
- 1 Blah Red 6.3 -> 所需输出:1
- 1 Blah Stripe 6.3 -> 所需输出:1
- 19 SomethingElse Red 12.1 -> 所需输出:2
- 19 SomethingElse Straight 12.1 -> 所需输出:2
- 5 Hello Red 15.9 -> 所需输出:3
- 42 再见红 55.0 -> 所需输出:4
所以,我应该得到结果编号 1、2、3、4。这是我编写查询的方式:
select Id,
Name,
Tag,
MilesAway,
row_number() over (order by MilesAway)
from table t
group by Id,
Name,
Tag,
MilesAway
我也试过将 partition by
添加到除标记之外的所有列。我知道这一点,我已经写了数百篇,为什么我感到困惑(除了午夜!)?
编辑:我想忽略 1 号地点有 2 条记录的事实,并且仍然希望下一条是 2,而不是 3。
您正在寻找dense_rank
:
select Id,
name,
Tag,
MilesAway,
dense_rank() over (
order by MilesAway
)
from table t;
select Id,name,Tag,MilesAway, dense_rank() 在 ( 通过 MilesAway 订购 ) 来自 table ;
试一试
select Id, name,Tag, MilesAway, dense_rank() over ( order by MilesAway)
from table t
group by Id, Name,Tag, MilesAway