How to count consecutive duplicates in a table?

前端 未结 6 2041
闹比i
闹比i 2021-01-13 09:52

I have below question:
Want to find the consecutive duplicates

SLNO   NAME     PG   
1       A1      NO                   
2       A2      YES                    


        
6条回答
  •  终归单人心
    2021-01-13 10:10

    Just for completeness, here's the actual Tabibitosan method:

    with sample_data as (select 1 slno, 'A1' name, 'NO' pg from dual union all 
                         select 2 slno, 'A2' name, 'YES' pg from dual union all
                         select 3 slno, 'A3' name, 'NO' pg from dual union all
                         select 4 slno, 'A4' name, 'YES' pg from dual union all
                         select 6 slno, 'A5' name, 'YES' pg from dual union all
                         select 7 slno, 'A6' name, 'YES' pg from dual union all
                         select 8 slno, 'A7' name, 'YES' pg from dual union all
                         select 9 slno, 'A8' name, 'YES' pg from dual union all
                         select 10 slno, 'A9' name, 'YES' pg from dual union all
                         select 11 slno, 'A10' name, 'NO' pg from dual union all
                         select 12 slno, 'A11' name, 'YES' pg from dual union all
                         select 13 slno, 'A12' name, 'NO' pg from dual union all
                         select 14 slno, 'A14' name, 'NO' pg from dual)
    -- end of mimicking a table called "sample_data" containing your data; see SQL below:
    select max(cnt) max_pg_in_queue
    from   (select   count(*) cnt
            from     (select slno,
                             name,
                             pg,
                             row_number() over (order by slno)
                               - row_number() over (partition by pg
                                                    order by slno) grp
                      from   sample_data)
            where    pg = 'YES'
            group by grp);
    
    MAX_PG_IN_QUEUE
    ---------------
                  6
    

提交回复
热议问题