Я пытаюсь создать набор данных, в котором я агрегирую столбец на основе значений другого столбца.Чтобы привести пример
id | score | id2 | offensive
---------+-------+-----+-----------
a1 | 1.2 | 1 | false
a2 | 36.0 | 1 | true
a3 | 1.2 | 1 | true
a4 | 36.0 | 1 | false
В конечном итоге я хочу создать массив из двух списков, сгруппированных по оскорбительным столбцам и идентификаторам, связанным с ним, и отсортировать их по значению оценки.Что-то вроде следующего:
id |id2 | clean_group | offensive_group
---------+-----+-------------+-----------------
a1 | 1 | [a2, a3] | [a4, a1]
a2 | 1 | [a2, a3] | [a4, a1]
a3 | 1 | [a2, a3] | [a4, a1]
a4 | 1 | [a2, a3] | [a4, a1]
Я знаю, что это избыточные данные, но это требование, и следует отметить, что все идентификаторы будут разными и уникальными, а идентификатор 2 будет одинаковым.Я пытался выполнить функцию array_agg
в Presto и collect_set
в улье, но у меня было много проблем.
Кто-нибудь может помочь?Можем ли мы как-то передать условия в совокупности, где мы говорим array_agg(id where offensive=true)
и т. Д.