Post

[Querydsl] 집계함수(Aggregate Function)

QueryDSL - 집계 함수: 데이터를 효과적으로 분석하자!

안녕하세요! 오늘은 QueryDSL에서 제공하는 집계 함수에 대해 알아보겠습니다. 집계 함수는 데이터를 분석하고 통계 내는 데에 필수적인 기능 중 하나입니다. QueryDSL은 다양한 집계 함수를 제공하여 데이터를 효과적으로 다룰 수 있습니다. 함께 예시 코드와 함께 살펴보도록 하겠습니다.

집계 함수란?


집계 함수는 여러 행의 데이터를 하나로 합치거나 특정 조건에 따라 데이터를 계산하는 함수입니다. QueryDSL에서는 다양한 집계 함수를 지원하여 데이터를 효과적으로 처리할 수 있습니다.

count 함수 사용하기


count 함수는 특정 조건에 맞는 데이터의 개수를 세는 데에 사용됩니다.

예시 코드

1
2
3
4
5
6
long productCount = new JPAQueryFactory(entityManager)
    .selectFrom(product)
    .where(product.price.gt(1000))
    .fetchCount();

위 코드에서 product.price.gt(1000)은 가격이 1000 이상인 제품의 개수를 세는 조건이며, fetchCount()를 통해 개수를 가져옵니다.

sum, avg, min, max 함수 사용하기


수량, 가격 등의 숫자형 데이터에 대한 합계, 평균, 최솟값, 최댓값을 계산할 수 있습니다.

예시 코드

1
2
3
4
5
6
BigDecimal totalAmount = new JPAQueryFactory(entityManager)
    .select(product.amount.sum())
    .from(product)
    .fetchOne();

위 코드에서 product.amount.sum()은 수량(amount)의 합계를 계산합니다.

groupBy와 함께 사용하기


groupBy 함수를 사용하면 특정 기준에 따라 데이터를 그룹핑하고 집계 함수를 적용할 수 있습니다.

예시 코드

1
2
3
4
5
6
7
List<Tuple> result = new JPAQueryFactory(entityManager)
    .select(product.category, product.price.avg())
    .from(product)
    .groupBy(product.category)
    .fetch();

위 코드에서는 카테고리별로 가격의 평균을 계산합니다.

📌주의사항과 팁


  • 집계 함수는 데이터베이스에서 계산되므로, 데이터 양이 많을 경우 성능에 영향을 줄 수 있습니다. 특히 groupBy를 사용할 때는 주의가 필요합니다.
  • 집계 함수를 사용할 때는 필요한 데이터만을 선택하여 최적화된 쿼리를 작성하는 것이 중요합니다.
  • groupBy 함수를 사용할 때는 그룹별로 어떤 데이터를 가져올지 명확하게 정의해야 합니다.
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.