2011-08-20 95 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

相關問題