sqlalchemy group_by错误

时间:2010-11-08 01:16:22

标签: group-by sqlalchemy

以下作品

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 :(得分:0)

它不起作用,因为查询无效。

每列都需要在group_by或需要汇总(即max()min(),等等。

答案 1 :(得分:0)

你想要做的是在mysql中有效,但在标准sql,postgresql和常识中无效。当您按'kod'对行进行分组时,组中的每一行都具有相同的'kod'值,但例如'rr'的值不同。使用聚合函数,您可以在此列中为每个组获取值的某些方面,例如

从表格组中选择kod,max(rr)by kod

会给你列出每个组中的'kod'和'rr'的最大值(按照kod)。

令人遗憾的是,在select子句中,您只能放置group by子句中的列和/或其他列中的聚合函数。你可以把你喜欢的任何东西放在哪里 - 这用于过滤。您还可以在包含聚合函数表达式的组之后添加其他'having'子句,该聚合函数表达式也可以用作组后过滤。