powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Внутренняя сортировка агрегатов в GROUP BY
4 сообщений из 4, страница 1 из 1
Внутренняя сортировка агрегатов в GROUP BY
    #35753408
iMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Вопрос следующий:
Имеется самописный агрегат (agr_text_comma), который при группировке конкетинирует текстовые строки (через запятую).
Пример: есть tbltest:
Код: plaintext
1.
2.
3.
4.
5.
6.
x | y
____
 1  | b
 1  | a
 1  | c
 2  | d
Есть запрос:
Код: plaintext
SELECT agr_text_comma(y) FROM tbltest GROUP BY x
Получаем что-то вроде:
Код: plaintext
1.
2.
3.
4.
x | y
______
 1  | b,a,c
 2  | d

Вопрос в следующем - есть ли возможность отсортировать агрегатное поле (в данном случае по алфавиту)?

Чтобы получилось следующее:
Код: plaintext
1.
2.
3.
4.
x | y
______
 1  | a,b,c
 2  | d

С уважением, imind.
...
Рейтинг: 0 / 0
Внутренняя сортировка агрегатов в GROUP BY
    #35753585
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Можно проще:

Код: plaintext
1.
2.
3.
4.
5.
6.
create temp table tbltest(x text,y text);
insert into tbltest values ('1','a');
insert into tbltest values ('1','b');
insert into tbltest values ('1','c');
insert into tbltest values ('2','d');

SELECT ljoin(lsort(list_accum(y)),',') FROM tbltest GROUP BY x;

Набор функций брать здесь
http://postgrestips.blogspot.com/2007/06/array.html
...
Рейтинг: 0 / 0
Внутренняя сортировка агрегатов в GROUP BY
    #35753600
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMind,

могу предложить через массив
Код: plaintext
1.
select s.x, array(select t.y from tbltest t where t.x=s.x order by t.y) from tbltest s group by s.x;
если обязательно строка нужна, то
Код: plaintext
1.
2.
3.
4.
5.
6.
select s.x,array_to_string ( array(select t.y from tbltest t where t.x=s.x order by t.y),',') from tbltest s group by s.x;
 x | array_to_string 
---+-----------------
  2  | d
  1  | a,b,c
( 2  rows)
...
Рейтинг: 0 / 0
Внутренняя сортировка агрегатов в GROUP BY
    #35753626
iMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
Вариант с массивами тоже был, немного в ином виде, правда. Тоже хотел агрегат написать, который формирует массив, а потом сортить его при выводе (после группировки).
Ладно, бум пробовать =)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Внутренняя сортировка агрегатов в GROUP BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]