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

Django聚合-使用bin按查询分组

  •  0
  • meepmeep  · 技术社区  · 16 年前

    Django 1.1.1段

    型号.py:

    class Datapoint(models.Model):
        parameter1 = models.FloatField()
        parameter2 = models.FloatField()
    

    select round(parameter1,0),
        avg(parameter1),
        avg(parameter2)
    from Datapoints
    group by round(parameter1,0)
    order by round(parameter1,0)
    

    我可以在django视图中的queryset上使用聚合来实现同样的功能吗,还是只直接按字段分组?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Daniel Roseman    16 年前

    这应该起作用:

    from django.db.models import Avg
    Datapoint.objects.extra(
        select={'rounded_param1': 'ROUND(parameter1)'}
    ).values('rounded_param1').annotate(Avg(parameter1)).annotate(Avg(parameter2))
    

    查看从该查询生成的SQL可以发现,它确实按舍入值分组。