代码之家  ›  专栏  ›  技术社区  ›  sebpiq

Django:Sum on a date属性,按月/年分组

  •  5
  • sebpiq  · 技术社区  · 14 年前

    "select date_format(date, '%Y-%m') as month, sum(quantity) as hours from hourentries group by date_format(date, '%Y-%m') order by date;"
    

    导致问题的部分是在聚合时按月分组。我试过这个(似乎合乎逻辑),但没有成功:

    HourEntries.objects.order_by("date").values("date__month").aggregate(Sum("quantity"))
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   lprsd    14 年前

    aggregate 只能生成一个聚合值。

    您可以通过以下查询获得当前月份的总小时数。

    from datetime import datetime
    this_month = datetime.now().month
    HourEntries.objects.filter(date__month=this_month).aggregate(Sum("quantity"))
    

    因此,要获得HourEntry的所有月份的聚合值,可以循环查询db中所有月份的queryset。但是最好使用原始sql。

    HourEntries.objects.raw("select date_format(date, '%Y-%m') as month, sum(quantity) as hours from hourentries group by date_format(date, '%Y-%m') order by date;")
    
        2
  •  0
  •   Johannes Charra    14 年前

    我猜你不能用“数量”加总 values("date__month")