Запрос с подзапросом в Django ORM
все!
Я сломал голову, пытаясь написать это на Django ORM. Помогите мне, пожалуйста!
SELECT *
FROM (
SELECT *, ROUND(AVG(foo) OVER w) AS avg_foo
FROM t1
WINDOW w AS (PARTITION BY DATE_PART('doy', date))
) AS t2
Я пытался написать что-то вроде этого:
MyModel.objects.annotate(
avg_foo=Round(
Window(
expression=Avg('foo'),
partition_by=Extract('date', 'doy')
)
)
)
Но если я начинаю фильтровать запрос по дате, среднее значение вычисляется из усеченной выборки, в отличие от RawQuery.
Модель:
class MyModel(models.Model):
date = models.DateField()
foo = models.IntegerField()