@Test
public void aggregation() throws Exception {
em.persist(new Member(null, 100));
em.persist(new Member("member2", 100));
em.persist(new Member("member3", 110));
em.persist(new Member("member4", 90));
// Querydsl 이 제공하는 Tuple
// member 단일 타입을 조회하는 것이 아닌 데이터 타입이 여러개일때는 튜플을 사용한다
// 실무에서는 튜플을 사용하지않고 DTO를 주로 쓴다.
List<Tuple> result = queryFactory
.select(member.count(),
member.age.sum(),
member.age.avg(),
member.age.max(),
member.age.min())
.from(member)
.fetch();
Tuple tuple = result.get(0);
assertThat(tuple.get(member.count())).isEqualTo(4);
assertThat(tuple.get(member.age.sum())).isEqualTo(400);
assertThat(tuple.get(member.age.avg())).isEqualTo(100);
assertThat(tuple.get(member.age.max())).isEqualTo(110);
assertThat(tuple.get(member.age.min())).isEqualTo(90);
}