在 SQL Server 中查找序列号
Posted
技术标签:
【中文标题】在 SQL Server 中查找序列号【英文标题】:Find sequence number in SQL Server 【发布时间】:2020-07-31 20:45:09 【问题描述】:这是我在 SQL Server 中的表:
number grade weight
--------------------------
1 1 185
2 1 179
3 3 191
4 3 192
5 3 193
6 1 194
7 1 196
8 1 188
9 1 187
10 1 200
11 2 201
12 2 202
13 2 203
14 2 191
15 2 187
我希望在 SQL Server 中没有任何临时表的输出:
Number grade weight
----------------------------
1-2 1 364
3-5 3 576
6-10 1 965
11-15 2 984
有人知道我该怎么做吗?
【问题讨论】:
请用您正在运行的数据库标记您的问题:sql-server、oracle、postgresql...? 【参考方案1】:这是一个孤岛问题。我认为最简单的方法是获取number
和计算出的row_number()
之间的差异:
select
concat(min(number), '-', max(number)) number,
grade,
sum(weight) weight
from (
select
t.*,
row_number() over(partition by grade order by number) rn
from mytable t
) t
group by grade, number - rn
order by min(number)
Demo on DB Fiddle:
号码 |等级 |重量 :----- | ----: | -----: 1-2 | 1 | 364 3-5 | 3 | 576 6-10 | 1 | 965 11-15 | 2 | 984【讨论】:
非常感谢。以上是关于在 SQL Server 中查找序列号的主要内容,如果未能解决你的问题,请参考以下文章