2011-08-20 135 views
7

我有这个疑问:SQLAlchemy的:从表中得到最大/最小/平均价值

mps = (
      session.query(mps) .filter_by(idc = int(c.idc)) 
           .filter_by(idmp = int(m.idmp)) 
           .group_by(func.day(mps.tschecked)) 
     ).all() 

我的问题是,我不知道如何提取(与SQLAlchemy的)最大/最小/平均从表中值......

我发现这一点:Database-Independent MAX() Function in SQLAlchemy

但我不知道在哪里可以使用此func.max /最小/平均...

有人能告诉我如何做这个?你可以给我一个例子吗?

+1

你不会只是改变上面的'session.query(func.avg(mps.some_column))。filter ...'?我还没有尝试过,或者在一段时间内使用了sqlalchemy,但是这似乎是你给出链接的明显结论。它不起作用吗? –

+0

它的工作原理,但比我需要调用值如mps [0],而不是mps.tschecked ...可以以不同的方式完成? – Wolfy

+1

'mps'在你的代码中至少有两种不同的东西。你为什么这样做?结果在文档http://www.sqlalchemy.org/docs/core/connections.html#sqlalchemy.engine.base.ResultProxy中描述 - 您可以使用索引,名称或列对象 –

回答

18

下列功能是可用与from sqlalchemy import func

  • func.min
  • func.max
  • func.avg

文件可here

您可以在query()方法中使用它们。

例子:

session.query(self.stats.c.ID, func.max(self.stats.c.STA_DATE)) 

(就像你使用普通的SQL agragate功能)

+2

你可以在这里找到[func'的文档](http://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=func#sqlalchemy.sql.expression.func),但你可以只需从'sqlalchemy import func'输入它即可。 –

-6

或者只是使用一个ORDER_BY(),然后选择第一个或最后一个元素。 。 。

+5

相当不好的主意...... – tomis

相关问题