python - 如何在 django 中获取一周内每小时的平均值?

标签 python django django-models django-rest-framework

我的任务是获取一周内每小时的一些数据的平均值。

{'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天开始平均。

有什么建议吗?

最佳答案

也许你可以尝试像F()这样表达式:

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

result = result.annotate(average=ExpressionWrapper(F('count')/7, output_field=DecimalField()))

关于python - 如何在 django 中获取一周内每小时的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58482058/

相关文章:

django - 重命名django自定义权限

Python:wxPython:GridBagSizer 布局管理帮助

python - 限制向用户显示某些数据

python - 获取for循环中的项目总数

python - 如何让django runserver停止记录到pycharm中的控制台

Django 1.5。 'url' 需要一个非空的第一个参数。 Django 1.5 中的语法更改

python - 无法使用 PyFITS 打开文件

运行脚本后 pythonw.exe 进程不退出

django - 如何使用cql-engine将图像存储到cassandra数据库中?

python - 如何在 django 的两边设置多对多字段空白=真