我的目标是创建一个查询,计算我的字段的绝对值并计算它们的平均值。我已经阅读了它并且我在Django中使用.extra
可能性但我无法实现我的目标。我也尝试了我想要的SQl查询。提前谢谢。
所需的结果将是该PosreSql查询的结果:
SELECT
time_stamp,
AVG(ABS(ddt))
FROM tropo
WHERE time_stamp BETWEEN '2018-01-16 8:00' AND '2018-01-17 8:00'
GROUP BY time_stamp
我的尝试是在Django中:
Table.objects.all().filter(time_stamp__range=(2018-01-16 8:00, 2018-01-17 8:00))
.extra(select={"field_abs": "abs(field)"})
.values('time_stamp')
.annotate(avg_field=Avg('field_abs'))
如何判断我的Djanogo查询有效?
答案 0 :(得分:1)
我认为你真的不需要额外的查询,试试这个:
from django.db.models import Func, Avg
tables = Table.objects.filter(time_stamp__range=(2018-01-16 8:00, 2018-01-17 8:00))
tables = tables.values('time_stamp').annotate(avg_field=Avg(Func('field', function='ABS')))