LINUX.ORG.RU

Выбрать всю строку при группировки SQLAlchemy как?

 , ,


0

1

Имеется табличка:

 id | createdDate | user | kind |  team  
----+-------------+------+------+--------
  2 | 2020-12-12  | y    | A    | red
  3 | 2020-12-12  | z    | A    | blue
  4 | 2020-12-12  | y    | A    | green
  1 | 2020-09-11  | x    | A    | red
  5 | 2020-12-13  | q    | B    | orange
  6 | 2020-12-22  | t    | A    | green

При выполнении группировки в список попадают значения поля user:

session.query(A.team, func.array_agg(A.user, type_=ARRAY(String)), 
              func.count(A.user)).group_by(A.team).filter(A.kind == 'A')
('blue', ['z'], 1)
('green', ['y', 't'], 2)
('red', ['y', 'x'], 2)
А как вместо значений поля user сделать элементом списка всю строку:
('blue', [('2020-12-12', 'z', 'A', 'blue', '2020-10-10')], 1)
('green', [('2020-12-12', 'y', 'A', 'green', '2020-11-10'), ('2020-12-22', 't', 'A', 'green', '2020-11-10')], 2)
('red', [('2020-12-12', 'y', 'A', 'red', '2020-10-10'), ('2020-09-11', 'x', 'A', 'red', '2020-10-10')], 2)
?????

P.S. вроде можно заджойница, но не могу синтаксически построить конструкцию никак

session.query(A.team, func.array_agg(A.id, type_=ARRAY(Integer)), 
              func.count(A.id)).group_by(A.team).filter(A.kind == 'A') ... .join(A ...)

Для того чтобы оставить комментарий войдите или зарегистрируйтесь.