-
Django 각 일자별로 특정 필드 sum 하기Django 2020. 6. 16. 07:36
특정 기간 동안 각 날짜마다 특정 수치를 Sum 해야 되는 경우,
아래 처럼 작성하면 동작이 될 줄 알았습니다.
DailyCampaign.objects.filter( advertiser_id=advertiser_id, date__range=[from_date, to_date], ).values('date') \ .annotate(installs=Sum('installs')) \
하지만 위처럼 된 경우,
각 일자가 group by되서 수치가 나오는게 아니라
그냥 해당 디비 row로 죽 나오는 것이었습니다.
한참 헤매다 방법을 찾은 것이
아래 소스처럼 하는 것이었습니다.
DailyCampaign.objects.filter( advertiser_id=advertiser_id, date__range=[from_date, to_date], ).values('date') \ .annotate(installs=Sum('installs')) \ .order_by('date')
차이점은
order_by('date')
이 문장이 차이가 나는 것인데,
group by 하는 'date' 항목으로 지정하면
annotate를 하면서 해당 'date'로 group by로 하기 위해서는
order_by('date') 를 지정해줘야 원래 의도대로 동작하는 것을 알 수 있었습니다.
'Django' 카테고리의 다른 글
Django ModelForm 에서 create, update 개발 (0) 2021.04.15 Django CharField 에서 ForeignKey 로 변경 (0) 2021.04.14 Django에서 WhiteNoise 사용하기 (0) 2019.07.11 Django template tag if 문에서 변수끼리 비교 (0) 2019.07.11 Mac에서 Django 와 MySql 연결하기 (0) 2016.11.22