Неправильное использование оконной функции LAG() произошло, когда я использовал функцию sum()

Магазины отключаются событиями BLOCK_EVENTS и включаются событиями UNBLOCK_EVENTS. Мое требование - активный диапазон магазина. Я привел ниже код, который я использую, но проблема заключается в том, что когда я хочу собрать все активные_периоды вместе, это дает ошибку.

# models.py
class PartnerEventHistory(models.Model):

partner_object = models.ForeignKey(InternetShop, on_delete=models.CASCADE, related_name='events')

event = models.CharField('رخداد', max_length=100, choices=EVENT_CH, null=True, blank=True)
date = models.DateTimeField('تاریخ ایجاد', db_index=True, auto_now_add=True)

запрос:

PartnerEventHistory.objects.filter(
    event__in=PartnerEventHistory.BLOCK_EVENTS +
    PartnerEventHistory.UNBLOCK_EVENTS
).order_by('partner_object', 'date').annotate(prev_event=Window(
    expression=Lag('event'))).annotate(active_period=Case(
        When(Q(event__in=PartnerEventHistory.BLOCK_EVENTS)
             & Q(prev_event__in=PartnerEventHistory.UNBLOCK_EVENTS),
             then=(F('date') - Window(Lag('date'))) /
             (1000000 * 60 * 60 * 24)),
        default=Value(0),
        output_field=IntegerField())).order_by('partner_object').annotate(
            total=Window(expression=Sum('active_period'),
                         order_by=F('partner_object').asc())).values(
                             'partner_object', 'cum_active_period')

ошибка:
OperationalError: misuse of window function LAG()
Вернуться на верх