본문 바로가기

앞서 살펴본 Group by 하는 결과에 많이 사용되는 집계함수에 대해서도 잠깐 살펴보자.

annotate() 구문 안에서 자주 사용되는 aggregation funcion 은 아래 처럼 몇가지를 사용할 수 있다.

장고 ORM에서 사용할 수 있는 주요 집계 함수는 다음과 같습니다.

  • Avg: 평균을 계산합니다.
  • Count: 개수를 계산합니다.
  • Max: 최대값을 계산합니다.
  • Min: 최소값을 계산합니다.
  • Sum: 합계를 계산합니다.

예제로 알아보면 가장 쉽다. 앞서 살펴본 동일한 Test 모델과 값이 있다고 가정한다.

2023.05.01 - [IT/파이썬] - Django - SQL group by 를 ORM 에서 구현하기

 

Django - SQL group by 를 ORM 에서 구현하기

group by는 SQL에서 데이터를 그룹화하는 구문입니다. 장고 ORM에서는 values() 메소드를 사용하여 group by의 대상이 되는 컬럼을 지정할 수 있습니다. 이후 annotate() 함수로 집계된 데이터에서 집계 함

wiznxt.tistory.com

name age count
A 10 1
A 20 2
B 10 3
B 20 4

다음과 같은 쿼리를 실행하면 다음과 같은 결과가 반환됩니다.

# Django ORM
queryset = Test.objects.values('name').annotate(
    count=Count('*'),
    avg_age=Avg('age'),
    max_age=Max('age'),
    min_age=Min('age'),
    sum_age=Sum('age')
)

# 결과
<QuerySet [
{'name': 'A', 'count': 2, 'avg_age': 15.0, 'max_age': 20, 'min_age': 10, 'sum_age': 30}, 
{'name': 'B', 'count': 2, 'avg_age': 15.0, 'max_age': 20, 'min_age': 10, 'sum_age': 30}
]>

간다하게 이해가 쏙~

not average ㅋㅋ 무슨뜻이지?

Pexels에서 Anete Lusina님의 사진: https://www.pexels.com/ko-kr/photo/6353843/

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.