Как получить среднее с каждого часа в неделю в Джанго? - PullRequest
1 голос
/ 21 октября 2019

У меня есть задача получить средние данные за каждый час в течение недели.

{'hour': 0, 'count': 70}
{'hour': 1, 'count': 92}
{'hour': 2, 'count': 94}
{'hour': 3, 'count': 88}
{'hour': 4, 'count': 68}
{'hour': 5, 'count': 69}
{'hour': 6, 'count': 70}
{'hour': 7, 'count': 82}
{'hour': 8, 'count': 91}
{'hour': 9, 'count': 67}
{'hour': 10, 'count': 92}
{'hour': 11, 'count': 100}
{'hour': 12, 'count': 92}
{'hour': 13, 'count': 55}
{'hour': 14, 'count': 61}
{'hour': 15, 'count': 47}
{'hour': 16, 'count': 36}
{'hour': 17, 'count': 19}
{'hour': 18, 'count': 11}
{'hour': 19, 'count': 6}
{'hour': 20, 'count': 3}
{'hour': 21, 'count': 9}
{'hour': 22, 'count': 27}
{'hour': 23, 'count': 47}

Приведенные выше данные являются результатом этого запроса

result = Device.objects.filter(station__in=stations, created_at__range=(start_date, end_date)) \
            .extra({'hour': 'hour(created_at)'}) \
            .values('hour').annotate(count=Count('id')).order_by('hour')

результатпо запросу за 7 дней я хочу получить среднее значение для каждого часа за 7 дней, проверить общее количество в час 0 равно 70, тогда мне нужно усреднить его за 7 дней.

Любое предложение

1 Ответ

0 голосов
/ 21 октября 2019

Вероятно, вы можете попробовать вот так: F() выражение:

from django.db.models import F, ExpressionWrapper, DecimalField    

result = result.annotate(average=ExpressionWrapper(F('count')/7, output_field=DecimalField()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...