2011-08-20 14 views
7

ho questa query:SQLAlchemy: ottenere max/min/avg valori da una tabella

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

Il mio problema è che non so come estrarre (con sqlalchemy) il max/min/avg il valore da una tabella ...

trovo questo: Database-Independent MAX() Function in SQLAlchemy

Ma io non so dove utilizzare questo func.max/min/avg ...

qualcuno può dirmi come Fai questo? Puoi darmi un esempio?

+1

non cambierebbe semplicemente il precedente per essere 'session.query (func.avg (mps.some_column)). Filter ...'? non l'ho provato, o ho usato sqlalchemy per un po ', ma sembra l'ovvia conclusione dal link che hai dato. non funziona? –

+0

Funziona, ma di quanto ho bisogno di chiamare valori come mps [0], e non mps.tschecked ... può essere fatto in un modo diverso? – Wolfy

+1

'mps' è almeno due cose diverse nel codice. perché lo stai facendo? i risultati sono descritti nella documentazione http://www.sqlalchemy.org/docs/core/connections.html#sqlalchemy.engine.base.ResultProxy - puoi usare indice, nome o un oggetto colonna –

risposta

18

Le seguenti funzioni sono disponibili con from sqlalchemy import func:

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

documentazione è disponibile here.

È possibile utilizzarli, ad esempio nel metodo query().

Esempio:

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

(proprio come si utilizzano le funzioni agragate in SQL pianura)

+2

Puoi trovare la [documentazione per 'func'] (http://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=func#sqlalchemy.sql.expression.func) qui, ma puoi importalo con 'da sqlalchemy import func'. –

-6

O semplicemente utilizzare un order_by() e selezionare il primo o l'ultimo elemento. . .

+5

Abbastanza performace-cattiva idea ... – tomis

Problemi correlati