我在Django中有以下模型。
我希望知道每小时进入商店的人数。 为了达到这个目的,我试图按
class StoreVideoEventSummary(models.Model):
Customer = models.ForeignKey(GlobalCustomerDirectory, null=True, db_column='CustomerID', blank=True, db_index=True)
Store = models.ForeignKey(Store, null=True, db_column='StoreID', blank=True, related_name="VideoEventSummary")
Timestamp = models.DateTimeField(null=True, blank=True, db_index=True)
PeopleCount = models.IntegerField(null=True, blank=True)
我希望知道每小时进入商店的人数。 为了达到这个目的,我试图按
时间戳
的小时分组,并求出PeopleCount
列的总和。store_count_events = StoreVideoEventSummary.objects.filter(Timestamp__range=(start_time, end_time),
Customer__id=customer_id,
Store__StoreName=store)\
.order_by("Timestamp")\
.extra({
"hour": "date_part(\'hour\', \"Timestamp\")"
}).annotate(TotalPeople=Sum("PeopleCount"))
看起来这个查询并没有按小时分组结果,它仅仅是向查询集合中的每一行添加了一个新列TotalPeople
,并将其值设置为PeopleCount
的值。
"hour": "date_part(\'hour\', \"StartTime\")"
- nivix zixer