2011-08-20 1 views
7

bu sorgu var:sqlalchemy: Bir tablodan maksimum/dk/ortalama değerler elde

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

Sorunum (sqlalchemy birlikte) ayıklamak için nasıl Max/min/avg bilmiyorum yani, bir tablodan değer ...

Bunu bulmak: Database-Independent MAX() Function in SQLAlchemy

Ama nasıl bu func.max/dak/ortalama ...

birisi bana söyleyebilir kullanmayı nerede bilmiyorum Bunu yap? Bana bir örnek verebilirmisin?

+1

Yukarıdakileri "session.query" (func.avg (mps.some_column)) olarak değiştirmemeniz ... filtre? '? denemedim ya da bir süredir sqlalchemy kullandım ama bu verdiğiniz bağlantıdan bariz bir sonuç gibi görünüyor. çalışmıyor mu? –

+0

Çalışıyor, ancak mps.tschecked değil mps [0] gibi değerleri çağırmam gerekenden farklı bir şekilde yapılabilir mi? – Wolfy

+1

'mps', kodunuzda en az iki farklı şeydir. bunu neden yapıyorsun? Dizin, ad veya –

cevap

18

aşağıdaki işlevler from sqlalchemy import func mevcuttur:

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

Belgeleri mevcut here olup.

Bunları sorgu() yönteminde kullanabilirsiniz.

Örnek:

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

+2

Burada [func'] belgelerini (http://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=func#sqlalchemy.sql.expression.func) bulabilirsiniz. sadece 'sqlalchemy import func' ile içe aktarın. –

-6

Ya da yalnızca bir order_by() kullanın ve ilk veya son öğeyi seçin (düz SQL agragate işlevleri kullanabilirsiniz gibi). . .

+5

Oldukça gerçekçi bir fikir ... – tomis