Оконные функции и другие «локальные» агрегации

Предположим, у меня есть эта таблица:

select * from window_test;

 k | v
---+---
 a | 1
 a | 2
 b | 3
 a | 4

В конечном итоге я хочу получить:

 k | min_v | max_v
---+-------+-------
 a | 1     | 2
 b | 3     | 3
 a | 4     | 4

Но я был бы так же счастлив получить это (поскольку я могу легко отфильтровать его с помощью Different) :

 k | min_v | max_v
---+-------+-------
 a | 1     | 2
 a | 1     | 2
 b | 3     | 3
 a | 4     | 4

Можно ли добиться этого с помощью оконных функций PostgreSQL 9.1+? Я пытаюсь понять, могу ли я заставить его использовать отдельные разделы для первого и последнего вхождения k=aв этом образце (упорядочено по v).

7
задан vyegorov 16 May 2012 в 18:22
поделиться