SQL按顺序出现值进行分组

Sha*_*han 3 sql database oracle gaps-and-islands

我有下表有2列

ID     |     Dept 

1      |    A    
2      |    A
3      |    B
4      |    B
5      |    B
6      |    A
Run Code Online (Sandbox Code Playgroud)

我想做一个计数,使输出看起来如下表所示.

Dept   |     Count

A      |    2    
B      |    3
A      |    1
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

Dav*_*dge 5

与迈克尔略有不同,同样的结果:

with cte1 as (
  select   id,
           dept,
           row_number() over (partition by dept order by id) - 
             row_number() over (order by id) group_num
  from     test),
cte2 as (
  select   dept,
           group_num,
           count(*) c_star,
           max(id) max_id
  from     cte1
  group by dept,
           group_num)
select   dept,
         c_star
from     cte2
order by max_id;
Run Code Online (Sandbox Code Playgroud)

http://sqlfiddle.com/#!4/ff747/1