Группировать по элементам массива в AWS Athena - PullRequest
0 голосов
/ 01 августа 2020

У меня есть таблица с двумя столбцами. Таблица имеет следующую схему:

column_name ---> type
student_id  ---> int
subjects    ---> array<string>

Пример данных:

student_id  --->  subjects
10          --->  [Math, Science]
20          --->  [Math, English]
30          --->  [English, French]

Я хочу сгруппировать по отдельному субъекту, то есть я хочу подсчитать количество субъектов, которые все студенты взяли. Итак, мой ожидаемый результат:

Math     ---> 2
Science  ---> 1
English  ---> 2
French   ---> 1

Я слышал о unnest массиве, но не могу получить такой результат.

Как мне подойти к этому?

1 Ответ

1 голос
/ 01 августа 2020

Думаю, вам нужно только unnest:

select subject, count(*)
from t cross join
     unnest(subjects) as u(subject)
group by subject;
...