如何在不指定道路的情况下按道路、方向和严重程度进行顶部分组

uttx8gqw  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(263)

我有一个大约8000段高速公路的数据库,我已经计算出了一个称为lottr\u amp的指标。公路的每一段都被标记为tmc,它表示公路上的位置和方向。我试图找出如何在不指定道路的情况下,按道路和方向对最高的10个乐透值进行分组。我可以在每一条道路的基础上,但这样做对整个国家将是不可能的。我必须一个接一个地输入每一条路才能得到结果。
这是我能弥补的最好的代码,一次只能做一条路:

select lottr_AMP, TMC_CODE, road, direction 
from [dbo].[TMCF6] 
where road = 'I-40' 
order by road, direction, lottr_amp desc

这是我的table:

cgh8pdjw

cgh8pdjw1#

这对你有用吗?

;with a as (
select lottr_AMP, TMC_CODE, road, direction
, rnk = row_number() over (partition by road, direction order by lottr_amp  desc)
from [dbo].[TMCF6]
)
select lottr_AMP, TMC_CODE, road, direction, rnk
from a
where rnk <=10
order by road, direction, rnk desc
vawmfj5a

vawmfj5a2#

我想你需要用 dense_rank 如下所示:

;with cte as
(
    select lottr_AMP, TMC_CODE, road, direction, dense_rank() over (partition by road, direction order by lottr_AMP desc) as rn
    from [dbo].[TMCF6] 
)
select *
from cte where rn <= 10

相关问题