SQL Группировать по нескольким столбцам - PullRequest
0 голосов
/ 06 мая 2020

Мой ввод:

    a b c 
    -------
    A 5 3
    A 4 2
    B 3 1
    B 5 3

Я хотел бы получить все a значения, имеющие одинаковые значения в b и c, поэтому результат должен быть следующим:

{A,B} 5 3

Я использую group by, но не достигаю своей цели.

1 Ответ

0 голосов
/ 06 мая 2020

В стандартном SQL это будет выглядеть так:

select b, c, listagg(a, ',') within group (order by a)
from t
group by b, c;

Не все базы данных поддерживают listagg(), но в большинстве есть метод конкатенации строк.

В Hive вы будет использовать collect_list() или collect_set():

select b, c, collect_list(a, ',')
from t
group by b, c;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...