sql >> Database >  >> RDS >> PostgreSQL

Vensterfuncties en meer lokale aggregatie

Dit levert het gewenste resultaat op met de voorbeeldgegevens. Ik weet niet zeker of het werkt voor gegevens uit de echte wereld:

select k, 
       min(v) over (partition by group_nr) as min_v,
       max(v) over (partition by group_nr) as max_v
from (
    select *,
           sum(group_flag) over (order by v,k) as group_nr
    from (
    select *,
           case
              when lag(k) over (order by v) = k then null
              else 1
            end as group_flag
    from window_test
    ) t1
) t2
order by min_v;

Ik heb de DISTINCT weggelaten hoewel.



  1. Primaire sleutels met Apache Spark

  2. @@ROWCOUNT – Verkrijg het aantal rijen dat wordt beïnvloed door de laatste instructie in SQL Server

  3. Een zeer beschikbare database voor Moodle bouwen met MySQL-replicatie

  4. Inleiding tot PL/SQL-referentiecursors in Oracle Database