Sqlalchemy में ग्रुप बाय और काउंट फंक्शन


106

मुझे sqlalchemy में एक "group by और count" कमांड चाहिए। मैं यह कैसे कर सकता हूँ?


1
का डुप्लिकेट हो रहा है stackoverflow.com/questions/370174/...
Arnkrishn

1
धन्यवाद, बहुत बहुत धन्यवाद
नज़्मुल हसन

जवाबों:


165

गिनती पर दस्तावेजीकरण का कहना है कि के लिए group_byप्रश्नों यह उपयोग करने के लिए बेहतर है func.count():

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()

16
और यहाँ Table.queryसंपत्ति के बजाय संपत्ति का उपयोग करने वालों के लिए पूरा विवरण है session.query():Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
जकूब कुकुल

2
@jkukul यह अपने आप में एक उत्तर होना चाहिए - मैं हमेशा सोचता था कि उप-वर्ग करते समय इस सीमा के आसपास कैसे जाया जाए और group_by और count का उपयोग करना चाहता था ..!
क्रिस-

1
इस उत्तर के संपादन निरर्थक के पहले वाक्य प्रकार को प्रस्तुत करते हैं। "इससे बेहतर" क्या ?
मार्क एमी

33

यदि आप Table.queryसंपत्ति का उपयोग कर रहे हैं:

from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()

यदि आप session.query()विधि का उपयोग कर रहे हैं (जैसा कि मिनीवार्क के उत्तर में बताया गया है):

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()

+ संस्थाओं के लिए एक
एस्पिरर मुरहाबी

27

आप कई समूहों और उनके प्रतिच्छेदन पर भी भरोसा कर सकते हैं:

self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()

ऊपर दिए गए क्वेरी दोनों कॉलम से मूल्यों के सभी संभावित संयोजनों के लिए मायने रखेंगे।


सवाल के लिए धन्यवाद, इसके बारे में सोचते हुए मुझे मेरे संबंधित प्रश्न का उत्तर मिला। ;-)
fccoelho
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.