Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng .aggregate () trên một giá trị được giới thiệu bằng .extra (select ={...}) trong Truy vấn Django?

Bạn có thể sử dụng một hàm tổng hợp tùy chỉnh để tạo truy vấn của mình:

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

Nhưng vì API này không có tài liệu và đã yêu cầu các bit SQL thô, nên tốt hơn hết bạn nên sử dụng truy vấn thô .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các trường ngày giờ trong MySQL và thời gian tiết kiệm ánh sáng ban ngày - làm cách nào để tham khảo thêm giờ?

  2. Python - mysqlDB, kết quả sqlite dưới dạng từ điển

  3. Làm cách nào để kết xuất tệp MySQL mà không có Khóa ngoại qua dòng lệnh?

  4. Tham gia so với truy vấn phụ

  5. Làm cách nào để tham gia Left Outer với Laravel?