Заказ в пределах ARRAY_AGG после GROUP BY в BigQuery

У меня есть таблица BigQuery:

create or replace table `project.table.mock` as (
  select 1 as col0, 'a' as col1, 'x' as col2
    union all
  select 2 as col0, 'a' as col1, 'y' as col2
    union all
  select 4 as col0, 'b' as col1, 'z' as col2
    union all
  select 8 as col0, 'b' as col1, 'X' as col2
    union all
  select 7 as col0, 'b' as col1, 'Y' as col2
)

Визуализация:

Заказ в пределах ARRAY_AGG после GROUP BY в BigQuery

Я хотел бы group by столбец col1 и array_agg результаты из col2. Я хотел бы, чтобы элементы, появляющиеся в каждом массиве, были отсортированы по col0.

Я сейчас по адресу:

select array_agg(col2) as col1arrays from `project.table.mock` group by col1;

что дает мне:

Заказ в пределах ARRAY_AGG после GROUP BY в BigQuery

Желаемый результат во второй строке будет [z, Y, X] (поскольку в строке, где z появляется в col2, есть 4 в col0, в строке, где Y появляется в col2, есть 7 в col0, а в строке, где X появляется в col2, есть 8 в col0, и 4 < 7 < 8.

Как я могу добиться упорядочения внутри array_agg, как описано выше, в BigQuery?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить предложение ORDER BY в функцию ARRAY_AGG().

SELECT ARRAY_AGG(col2 ORDER BY col1 ASC) AS col1arrays 
  FROM `project.table.mock`  
 GROUP BY col1;
WITH mock as (
  select 1 as col0, 'a' as col1, 'x' as col2
    union all
  select 2 as col0, 'a' as col1, 'y' as col2
    union all
  select 4 as col0, 'b' as col1, 'z' as col2
    union all
  select 8 as col0, 'b' as col1, 'X' as col2
    union all
  select 7 as col0, 'b' as col1, 'Y' as col2
)
select array_agg(col2 ORDER BY col0) as col1arrays from mock group by col1;

output:
+------------+
| col1arrays |
+------------+
| [x,y]      |
| [z,Y,X]    |
+------------+

Другие вопросы по теме