如何按顺序将相同的值分组

问题描述 投票:0回答:2

我正在尝试按顺序对数据进行分组。我有下表:

id  num
-------
1   1
2   1
3   1
4   2
5   1
6   2
7   2
8   4
9   4
10  4

我需要SQL查询来输出以下内容:

num       count(num)
-------------------    
1          3    
2          1    
1          1    
2          2    
4          3 

样本数据:

select * into #temp 
from (
    select 1 as id, 1 as num union all
    select 2,  1  union all
    select 3,  1  union all
    select 4,  2  union all
    select 5,  1  union all
    select 6,  2  union all
    select 7,  2  union all
    select 8,  4  union all
    select 9,  4  union all
    select 10, 4 
) as abc
select * from #temp

选择数字,计数(数字)来自#temp按数字分组

我需要这个:

num       count(num)    
-------------------    
1          3    
2          1    
1          1    
2          2    
4          3 

实际输出:

num    count(num)    
---------------------    
1       4    
2       3    
4       3
sql sql-server database sql-server-2014 gaps-and-islands
2个回答
4
投票

这是一个空白和孤岛的问题。这是使用lag()和累积sum()解决问题的一种方法:


0
投票

另一种方法可以使用row_number

© www.soinside.com 2019 - 2024. All rights reserved.