sql >> データベース >  >> RDS >> Mysql

日付とSUM値によるDjangoグループ

    うーん、Countを使用しています 、Sumを使用する必要があります 、およびvalues() GROUP BYに何が入るかを決定します したがって、values('datetime')を使用する必要があります それだけ。クエリセットは次のようになります:

    from django.db.models import Sum
    
    values = self.model.objects.filter(
        datetime__range=(self.dates[0], self.dates[1])
    ).values('datetime').annotate(data_sum=Sum('data'))
    

    filter()の順序についてはよくわかりませんが 、したがって、これである可能性があります:

    values = self.model.objects.values('datetime').annotate(data_sum=Sum('data')).filter(
        datetime__range=(self.dates[0], self.dates[1])
    )
    

    それなら両方試してみたいと思います。これらのクエリセットの生のクエリを表示する場合は、Queryset.queryを使用してください :

    print self.model.objects.filter(
        datetime__range=(self.dates[0], self.dates[1])
    ).values('datetime').annotate(data_sum=Sum('data')).query.__str__()
    

    したがって、正しいクエリを確実に取得できます。

    お役に立てば幸いです。



    1. 1列のみのDISTINCT

    2. json配列をmysqlデータベースに挿入する方法

    3. DistinctとGroupByのパフォーマンスが異なる場合はどうなりますか?

    4. 3SQLクエリのパフォーマンスを遅らせる厄介なI/O統計