Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan .aggregate() pada nilai yang diperkenalkan menggunakan .extra(select={...}) dalam Django Query?

Anda dapat menggunakan fungsi agregat khusus untuk menghasilkan kueri Anda:

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'))

Tetapi karena API ini tidak berdokumen dan sudah memerlukan bit SQL mentah, Anda mungkin lebih baik menggunakan kueri mentah .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mencoba mendapatkan properti non-objek - CodeIgniter

  2. MySQL mengkonversi Derajat, Menit, Detik ke Derajat desimal

  3. Menjalankan migrasi dengan Rails dalam wadah Docker dengan beberapa instance wadah

  4. Pelajari Kueri SQL Dasar Menggunakan MySQL

  5. Bagaimana cara mengonversi kolom ke ASCII dengan cepat tanpa menyimpan untuk memeriksa kecocokan dengan string ASCII eksternal?