【问题标题】:MYSQL equivalent query in Django Average and Group ByDjango Average 和 Group By 中的 MYSQL 等效查询
【发布时间】:2021-03-27 04:27:26
【问题描述】:

请帮助我在 Django 中使用 ORM 编写相同的查询

SELECT DATE(`created_at`) DateOnly, 
AVG(`amout`) AS val_1  
FROM `account`  
GROUP BY DateOnly

【问题讨论】:

  • 猜测:for p in account.objects.raw('SELECT DATE(created_at) DateOnly, AVG(amout) AS val_1 FROM account GROUP BY DateOnly'): ... print(p) - 注意amout 不是一个词
  • @Strawberry 我正在寻找 ORM 而不是原始查询

标签: mysql django django-models django-rest-framework mysql-python


【解决方案1】:

使用 Castdatetime 转换为 date,然后使用 values 进行聚合。 ORM中的一个常见习语.values().annotate(..)用于执行group by操作。

from django.db.models.functions import Cast
from django.db.models import DateField

Account.objects.annotate(
   DateOnly = Cast('created_at', output_field=DateField()),
).values('DateOnly').annotate(val_1 = Avg('amout'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2014-05-08
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多