sql - 使用 ROW_NUMBER() 对数据集进行分区
问题描述
我对ROW_NUMBER()
在 SQL 中使用有点困惑。
有一个当前看起来如下的数据集:
Number ID
1 1
2 6
3 11
我在下面写了一个查询:
SELECT rownum = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Number), Number
FROM #SEQNUMBERSTEMP
这给出了输出:
rownum Number
1 1
1 2
1 3
1 4
1 5
1 6
1 1
1 2
1 3
1 4
1 1
但我想实现以下目标:
rownum Number
1 1
1 2
1 3
1 4
1 5
2 1 # Note 2 should start at position 6
2 2
2 3
2 4
2 5
3 1 # Note 3 should start at position 11
3 2
3 3
解决方案
您可能希望DENSE_RANK()
不使用PARTITION BY
子句,例如:
SELECT rownum = DENSE_RANK() OVER (ORDER BY Number), Number
FROM #SEQNUMBERSTEMP
推荐阅读
- tensorflow - Keras model.fit 在 TPU 上训练时导致 InvalidArgumentError
- java - 事务回滚在春季不起作用
- swiftui - 如何使用 .onDelete 中的值删除 FMDB 数据
- c# - 如何避免在 ASP.NET 核心控制器中重新加载资源
- java - 在java中重用现有接口实现的设计模式
- reactjs - 将 Wordpress 页面(跨域)嵌入到具有动态高度的 React 应用程序中
- sql-server - 使用 FV 和付款的现值公式
- python - 如何从熊猫中的数据框中按百分位数制作固定数量的组
- python - 用日期时间数据 matplotib 绘制垂直线
- python - Python OpenCV 没有检测到明显的轮廓