【问题标题】:How to use ntile without dividing the partition and incrementing each bucket by one如何在不划分分区并将每个桶递增一的情况下使用 ntile
【发布时间】:2015-08-19 21:35:26
【问题描述】:

如何使用ntile 排名函数而不指定划分每个分区的数字,而是为每个分区分配一个递增的数字?

我想将具有相同值的字段子集的项目分组,然后用相同的数字标记它们,以便每个组的数字按排序顺序递增。

【问题讨论】:

  • 不是很清楚你在追求什么,,,,一些样本数据和所需的输出会有很大帮助。

标签: sql sql-server ranking-functions


【解决方案1】:

NTILE 不是你的功能。你想要DENSE_RANK

select DENSE_RANK() over (Order by Col1, Col2...) GroupFlag,
    * 
from MyTable

这将使Col1Col2 字段中具有共同值的所有记录具有相同的整数。 GroupFlag 整数将从 1 开始并按照 order by 子句的顺序递增。

如果您打算问其他问题,请告诉我,我会再试一次。

【讨论】:

  • 感谢您的回复,这正是我想要的,但我可以在不更改数据顺序的情况下做到这一点@Brian Pressler
  • 如果有办法可以请您查看之前的评论。
  • 您可以在from 子句之后添加一个order by 子句,以您喜欢的任何方式对记录进行排序...它不会影响GroupFlag 的编号。
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多