sql-запрос для создания карты массива в aws athena (presto)

У меня есть таблица в aws athena со следующими столбцами

Company name  Employee Name   Salary
------------------------------------
 Apple       | John         | 50
 Apple       | Dima         | 100
 Microsoft   | Bart         | 75
 Google      | Harry        | 90
 Google      | Noah         | 80

и я хочу сгенерировать одним запросом следующую таблицу, желательно с использованием карты массивов

Company name  Employee Data
------------------------------------
 Apple       | [John,50],[Dima,100]
 Microsoft   | [Bart,75]
 Google      | [Harry,90],[Noah,80]

Есть идеи, как это можно сделать?


person user1358729    schedule 27.08.2018    source источник
comment
есть функция listagg или что-то подобное?   -  person hotfix    schedule 27.08.2018
comment
я уже решил это с помощью arrayagg, но я боюсь, что порядок значений может быть другим, например: select company_name, array_join (array_agg (salary), ','), array_join (array_agg (employee_name), ', ') из группы db.stats по имени_компании;   -  person user1358729    schedule 27.08.2018


Ответы (1)


В настоящее время в PrestoDB нет формальной функции объединения групп. Но мы можем приблизиться:

SELECT
    CompanyName,
    array_join(array_agg('[' || EmployeeName || ',' || Salary || ']'), ',', '') AS EmployeeData
FROM yourTable
GROUP BY
    CompanyName;
person Tim Biegeleisen    schedule 27.08.2018