Например, допустим, что у меня есть таблица в PostgreSQL (выше 9.0), заполненная данными:
row_id percent isrc
1 100 123iee43
2 100 1234wr32
3 98 123iee43
4 99 1234wr32
5 95 12313be3
6 99 12313be3
7 96 12313be3
Я хотел бы, чтобы мой результат содержал ВСЕ приведенные выше строки, сгруппированные по столбцу isrc
, а затем целые группы, упорядоченные по percent
по убыванию. Вот как должен выглядеть результат:
row_id percent isrc
1 100 123iee43
3 98 123iee43
2 100 1234wr32
4 99 1234wr32
6 99 12313be3
7 96 12313be3
5 95 12313be3
Если бы я хотел упорядочить по возрастанию, это то, что я ожидал бы (я хочу упорядочить только по первой строке в одной группе, другие строки в одной группе не имеют значения):
row_id percent isrc
6 99 12313be3
7 96 12313be3
5 95 12313be3
1 100 123iee43
3 98 123iee43
2 100 1234wr32
4 99 1234wr32
Думаю, мне нужно как-то использовать оконные функции, но я не смог найти правильного решения, если оно существует. Кроме того, было бы здорово, если бы решение было максимально элегантным. :)
123iee43
перед1234wr32
в третьем списке? Должно быть наоборот. Также: как вы хотите отсортироватьisrc
? По возрастанию, по убыванию или нет? Это актуально для разрыва связей. - person Erwin Brandstetter   schedule 05.04.2013