группировка по столбцу и выбор другого столбца в качестве списка в rails

#sql #ruby-on-rails #postgresql

#sql #ruby-on-rails #postgresql

Вопрос:

У меня есть таблица, подобная приведенной ниже

  --- --- 
| A | B |
 --- --- 
| 1 | 1 |
 --- --- 
| 2 | 1 |
 --- --- 
| 3 | 2 |
 --- --- 
| 4 | 2 |
 --- --- 
| 5 | 2 |
 --- --- 
  

Есть ли эффективный способ запроса к форме, подобной:

 {1 => [1,2], 2 => [3,4,5]}
  

(сгруппируйте по B и выберите A как список)

Ответ №1:

вы можете использовать string_agg() функцию

 select B,string_agg(A,', ') 
from tablename
group by B
  

ИЛИ вы можете использовать array_agg()

 select B,array_agg(A) 
from tablename
group by B