Оконная функция Django с функцией агрегирования в том же аннотации - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь использовать функцию агрегирования Django SUM в annotate вместе с оконными функциями Django.Проблема в том, что когда я пытаюсь использовать функцию агрегирования в том же поле модели, что и в предыдущем псевдониме аннотации, Django выдает ошибку window functions are not allowed in GROUP BY.Я предоставляю запрос ниже.

queryset = UserEcosystemApplicationUsage.objects.filter(
    user_app__user=child,
    from_datetime__gte=from_datetime,
    to_datetime__lte=to_datetime
).annotate(
    day_duration_seconds=Epoch(Window(
       expression=Sum('duration_time'),
          partition_by=[F('name'), F('date')]
       )),
    period_duration_seconds=Epoch(Window(
       expression=Sum('duration_time'),
          partition_by=[F('name')],
       )),
    # duration_total_seconds=Epoch(Window(
    #     expression=Sum('duration_time')
    # )),
    duration_total_seconds=Sum('duration_time')
).values(
    'duration_total_seconds'
).distinct()

Прямо сейчас, когда закомментированная часть запроса используется вместо Sum(duration_time), тогда все в порядке, но я ожидаю, что Sum('duration_time') также будет работать.Не могли бы вы точно указать, что я делаю неправильно или представить ссылки на документы, которые объясняют, что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...