ошибка sqlalchemy group_by - PullRequest
       25

ошибка sqlalchemy group_by

0 голосов
/ 08 ноября 2010

Работает

s = select([tsr.c.kod]).where(tsr.c.rr=='10').group_by(tsr.c.kod)

, а это не так:

s = select([tsr.c.kod, tsr.c.rr, any fields]).where(tsr.c.rr=='10').group_by(tsr.c.kod) 

Почему?

thx.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2010

То, что вы пытаетесь сделать, каким-то образом допустимо в mysql, но неверно в стандартном sql, postgresql и здравом смысле Когда вы группируете строки по 'kod', каждая строка в группе имеет одинаковое значение 'kod', но, например, разные значения для 'rr'. С помощью агрегатных функций вы можете получить некоторые значения значений в этом столбце для каждой группы, например

выберите kod, max (rr) из группы таблиц по kod

даст вам список 'kod's и max' rr в каждой группе (по kod).

Как это ни печально, в предложении select вы можете помещать столбцы из группы только по предложению и / или агрегатные функции из других столбцов. Вы можете поместить туда, где хотите - это используется для фильтрации. Вы также можете добавить дополнительное предложение «has» после группы, которая содержит выражение агрегатной функции, которое также можно использовать в качестве постгрупповой фильтрации.

0 голосов
/ 08 ноября 2010

Это не работает, потому что запрос недействителен.

Каждый столбец должен быть в group_by или должен содержать совокупность (т. Е. max(), min(), как угодно).

...