我正试图用django 2.0orm来完成这一点,但是如果你能用一个原始sql查询来解决这个问题,那也会很有帮助。
比如说,我有一个带有“目的地”栏目的表格,它将永远是一个城市的名字,例如“洛杉矶”、“纽约”、“旧金山”或“西雅图”(但我们事先不知道那里有多少个不同的城市)。
我需要一个sql查询(或django orm代码),它将获得指定日期范围内所有城市的计数,按记录的周分组(基于创建的时间戳,周从星期一开始)。
下面是django模型的一个示例(非常简单):
from django.db import models
from django.utils import timezone
class Package(models.Model):
id = models.AutoField(serialize=False, primary_key=True)
name = models.CharField(max_length=64)
email = models.CharField(max_length=128, unique=True)
phone = models.CharField(max_length=32)
destination = models.CharField(max_length=64)
created_at = models.DateField(db_index=True, default=timezone.now)
updated_at = models.DateField(default=timezone.now)
下面是一个以json为结构的所需输出示例:
{
"2017-06-05-2017-06-11": {
"Los Angeles": 100,
"New York": 50,
"Copenhagen": 20
},
"2017-06-12-2017-06-18": {
"Los Angeles": 10,
"Toronto": 23,
"Las Vegas": 21,
"Carson City": 8,
"Raleigh": 1
},
"2017-06-19-2017-06-25": {
"Toronto": 24,
"Tokyo": 75,
"Kansas City": 123,
"Salem": 84,
"Bismarck": 22,
"Boise": 77,
"Las Vegas": 123
}
}
请注意,结果的大小可能不同,日期范围都从星期一开始到星期天结束(包括星期一和星期天),城市名称是可变的和未知的。
我知道有很多方法可以将其构建到python逻辑中并执行许多查询,但我希望我们可以在单个查询中执行这些操作。谢谢!
1条答案
按热度按时间t5fffqht1#
对于原始查询,可以按计数分组