2011-08-20 10 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) होने के लिए उपरोक्त नहीं बदलेंगे। फ़िल्टर ... '? मैंने कोशिश नहीं की है, या थोड़ी देर में sqlalchemy इस्तेमाल किया है, लेकिन यह आपके द्वारा दिए गए लिंक से स्पष्ट निष्कर्ष की तरह लगता है। क्या यह काम नहीं करता है? –

+0

यह काम करता है, लेकिन मुझे एमपीएस [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 है।

आप क्वेरी() विधि में उनका उपयोग कर सकते हैं यानी।

उदाहरण:

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

+2

आप यहां [func'] के लिए प्रलेखन पा सकते हैं (http://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=func#sqlalchemy.sql.expression.func) लेकिन आप कर सकते हैं बस इसे 'sqlalchemy आयात func' से आयात करें। –

-6

या सिर्फ एक order_by() का उपयोग करें और पहले या अंतिम तत्व का चयन (जैसे आप सादे एसक्यूएल में agragate कार्यों का उपयोग)। । ।

+5

काफी प्रदर्शन-बुरा विचार ... – tomis

संबंधित मुद्दे