我有一个时间序列数据存储在postgres中。我希望在给定视频ID的情况下查看每个月的最后记录的观看次数。
VideoID | created | views
1 2015-01-01 5
2 2015-01-01 5
1 2015-01-15 20
1 2015-01-28 30
2 2015-02-01 40
1 2015-02-01 50
1 2015-02-26 60
1 2015-03-05 100
鉴于模型
from django.db import models
class Video(models.Model):
id = models.IntegerField()
class VideosStats(models.Model):
video_id = models.ForeignKey(Video)
views = models.IntegerField()
我知道有类似的SQL问题,但我想知道如果在django中,你可以完成这个效果。期望的输出:
视频ID 1 [{'已创建':2015-01-28,'观看':30},{'已创建':2015-02-26,'观看& #39;:60},{'已创建':2015-03-05,'观看':100}]
答案 0 :(得分:0)
因此,如果给定一年,您可以在查询集上执行额外/提取过滤器,以便为每个视频提供每月最新记录。
the_year = 2016 # the year you want
queryset = VideoStats.filter(created__year=the_year)
queryset = queryset.extra(select={'month': "EXTRACT(month from created)"}).values('month').annotate(Max('views')).order_by('month')