首页 > 解决方案 > Django Average 和 Group By 中的 MYSQL 等效查询

问题描述

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

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

标签: mysqldjangodjango-modelsdjango-rest-frameworkmysql-python

解决方案


datetime转换为dateusingCast然后聚合 using 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'))

推荐阅读