Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Django क्वेरी में .extra(select={...}) का उपयोग करके पेश किए गए मान पर .aggregate() का उपयोग करना?

आप अपनी क्वेरी तैयार करने के लिए कस्टम समग्र फ़ंक्शन का उपयोग कर सकते हैं:

WEEK_FUNC = 'STRFTIME("%%%%W", %s)' # use 'WEEK(%s)' for mysql

class WeekCountAggregate(models.sql.aggregates.Aggregate):
    is_ordinal = True
    sql_function = 'WEEK' # unused
    sql_template = "COUNT(%s)" % (WEEK_FUNC.replace('%%', '%%%%') % '%(field)s')

class WeekCount(models.aggregates.Aggregate):
    name = 'Week'
    def add_to_query(self, query, alias, col, source, is_summary):
        query.aggregates[alias] = WeekCountAggregate(col, source=source, 
            is_summary=is_summary, **self.extra)


>>> game_objects.extra(select={'week': WEEK_FUNC % '"games_game"."date"'}).values('week').annotate(count=WeekCount('pk'))

लेकिन चूंकि यह एपीआई अनियंत्रित है और पहले से ही कच्चे एसक्यूएल के बिट्स की आवश्यकता है, आप कच्ची क्वेरी



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. यदि टेबल ड्रॉप टेबल मौजूद है तो इसे बनाएं, अगर यह मौजूद नहीं है तो इसे बनाएं

  2. अधिसूचना के लिए हर सेकेंड क्वेरी तालिका। क्या यह एक अच्छा अभ्यास है?

  3. MySQL:यदि मौजूद नहीं है तो बाधा जोड़ें

  4. MySQL - समूह के भीतर काउंटर

  5. SQL LIKE क्वेरी विफल - तैयार कथन में घातक त्रुटि