Есть ли способ назвать группировки? Для каждого набора групп (явно заданного или сгенерированного с помощью rollup или куба в соответствии с https://www.postgresql.org/docs/devel/static/queries-table-expressions.html) я хотел бы как-то указать имя в столбце результата. Вот некрасиво мгновенный демо того, что я пытаюсь сделать, с именем просто быть список сгруппированных колонок:postgresql, названные группировки?
select *, array_to_string(array_remove(array[case when "A" is null then null else 'A' end,
case when "B" is null then null else 'B' end,
case when "C" is null then null else 'C' end
],null),',') as grouping_set
from (values ('a','b','c'),
('aa','bb','cc'),
('aaa',null,'ccc')) as foo("A","B","C")
group by rollup(1,2,3);
A | B | C | grouping_set
-----+----+-----+--------------
a | b | c | A,B,C
a | b | | A,B
a | | | A
aa | bb | cc | A,B,C
aa | bb | | A,B
aa | | | A
aaa | | ccc | A,C <--------- should be A,B,C
aaa | | | A <--------- should be A,B
aaa | | | A
| | |
Но обратите внимание, что есть проблема с двумя рядами, помечены стрелками: оба из них включают столбец B в группировке, но не в имени, потому что B является нулевым в этих группах.
Любые идеи или лучшие способы обойти это?
ответ Лоренц сделал его в течение нескольких секунд, прежде чем ваша, так что я выбрал его, но это здорово, и имеет ссылку на документацию, которая может быть полезна, потому что «группировка» не простая вещь, чтобы Google на. – Sigfried