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

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

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

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

这是我的table:

cgh8pdjw

cgh8pdjw1#

这对你有用吗?

  1. ;with a as (
  2. select lottr_AMP, TMC_CODE, road, direction
  3. , rnk = row_number() over (partition by road, direction order by lottr_amp desc)
  4. from [dbo].[TMCF6]
  5. )
  6. select lottr_AMP, TMC_CODE, road, direction, rnk
  7. from a
  8. where rnk <=10
  9. order by road, direction, rnk desc
vawmfj5a

vawmfj5a2#

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

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

相关问题