2016-09-09 1 views
1

у меня есть в таблице ниже:Impala/SQL: группа по - агрегировать поле путем создания списка всех значений

id | animal | team 
------------------------- 
1 | dog  | A 
2 | cat  | A 
3 | cow  | A 
4 | bird | B 
5 | rat  | B 
6 | goat | C 

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

team | animal_list 
-------------------------- 
A | [dog, cat, cow] 
B | [bird, rat] 
C | [goat] 

Возможно ли это путем запроса Impala/SQL?

ответ

4

Пожалуйста, используйте этот запрос.

select team, concat("[", group_concat(animal), "]") as animal_list from anmials group by team 

Вы можете увидеть вывод результата здесь: http://sqlfiddle.com/#!9/1b03f/3

+0

Спасибо! Но мне интересно, можно ли просто сохранить одну копию каждого значения в списке? Например, если в команде есть две кошки, я хочу [собаку, кошку, корову] вместо [собака, кошка, кошка, корова]? – Edamame

+0

да, вы можете это сделать, используйте эту команду select, group_contact (отдельная (животная)) в качестве animal_list из группы участников командой – Senthil

+0

см. Выход/демо здесь: http://sqlfiddle.com/#!9/12604/ 2 – Senthil