Я хотел бы объединить два столбца, используя запрос группы, в результате чего получается массив, разделенный скобками. Я знаю, что этот вопрос связан с вопросом this, но, как обычно, мой прецедент немного отличается.Как агрегировать два столбца PostgreSQL в массив, разделенный скобками
Простой пример (также как SQL Fiddle). В настоящее время мой запрос возвращает следующее:
ID X Y
3 0.5 2.71
3 1.0 2.50
3 1.5 2.33
6 0.5 2.73
6 1.5 2.77
Но где я хотел бы сцепить/для агрегации X
/Y
столбцов, чтобы получить следующее:
ID XY
3 [[0.5,2.71],[1.0,2.50],[1.5,2.33]]
6 [[0.5,2.73],[1.5,2.77]]
В настоящее время я пытался объединить столбцы в один следующим образом:
SELECT "ID",concat_ws(', ',"X", "Y") as XY FROM Table1;
Который возвращает:
ID xy
3 0.5, 2.71
3 1, 2.50
3 1.5, 2.33
6 0.5, 2.73
И использовали array_agg()
:
SELECT "ID",array_to_string(array_agg("X"),',') AS XY
FROM Table1
GROUP BY "ID";
Результирующее в:
ID xy
3 0.5,1,1.5
6 0.5
Я чувствую, что я все ближе, но руку помощи будет очень ценна.
Спасибо за ваш быстрый ответ, он отлично работает в postgresql (не в sqlfiddle) – Mattijn
@Mattijn: Ваша версия, очевидно, 9.5 или более поздней. sqlfiddle застрял в 9.3 в течение некоторого времени. –
Кроме того, тип x и y должен быть таким же, т.е. если x имеет текст, тогда y также должен иметь текст типа. Если нет, вам нужно использовать случай типа. (:: текст) –