PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Прозоречни функции и повече локално агрегиране

Това връща желания резултат с примерните данни. Не съм сигурен дали ще работи за данни от реалния свят:

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;

Пропуснах DISTINCT все пак.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Drop колона не премахва препратките към колони изцяло - postgresql

  2. SQL - Комбиниране на множество подобни заявки

  3. Как да изберете идентификатор с група за максимална дата по категория в PostgreSQL?

  4. Ключови неща, които трябва да наблюдавате в PostgreSQL – анализиране на вашето работно натоварване

  5. Намек за PostgreSQL