쿼리에서 aggregation함수(count(), max(), first() 등등) 와 필요한 컬럼을 출력하는 방법은 아래와 같습니다.

SELECT name AS changed_name, count(count)
FROM test
GROUP BY name;


위와 같은 쿼리는 아래와 같이 장고 ORM으로 표현할 수 있습니다.

queryset = Test.objects.values('name').annotate(
    max_count=Count('count'),
    changed_name=F('name')
).values('max_count', 'changed_name')


aggregation 함수를 사용하기 전, group by를 진행할 필드를 지정해 줍니다.

queryset = Test.objects.values('name')


group by를 진행할 필드를 작성한 다음, annotate()를 사용해서 aggregation과 변경할 이름을 작성합니다.

queryset = Test.objects.values('name').annotate(
    max_count=Count('count'),
    changed_name=F('name')
)


마지막으로 호출하고자 하는 필드를 지정해 줍니다. 이때는 annotate()에서 변경한 이름을 지정합니다.

queryset = Test.objects.values('name').annotate(
    max_count=Count('count'),
    changed_name=F('name')
).values('max_count', 'changed_name')


+ Random Posts