python—统计按周分组的单个列上的值的出现次数

lokaqttq  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(471)

我正试图用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逻辑中并执行许多查询,但我希望我们可以在单个查询中执行这些操作。谢谢!

t5fffqht

t5fffqht1#

对于原始查询,可以按计数分组

select destination, week(created_at,1), count(*)
from my_table
group by destination, week(created_at,1)

相关问题