簡體   English   中英

計算按周分組的單個列上的值出現

[英]Count occurrences of values on a single column grouped by week

我正在嘗試使用Django 2.0 ORM完成此操作,但是如果您可以使用原始SQL查詢解決此問題,那也將非常有幫助。

舉例來說,我有一個帶有“目的地”列的表,該表將始終是城市的名稱,例如“洛杉磯”,“紐約”,“舊金山”或“西雅圖”(但我們不事先不知道會有多少個不同的城市)。

我需要一個SQL查詢(或Django ORM代碼),該查詢將為我提供指定日期范圍內所有城市的計數,並按記錄的星期進行分組(基於created_at時間戳,星期從星期一開始)。

這是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邏輯中並執行許多查詢,但是我希望我們可以在單個查詢中執行此操作。 謝謝!

對於原始查詢,您可以按計數分組

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM