Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring Boot
- Servlet
- JDBC
- jpa
- 자바
- 알고리즘
- transaction
- 스프링 핵심 기능
- 스프링
- Proxy
- spring
- AOP
- Android
- 스프링 핵심 원리
- 인프런
- db
- Exception
- java
- pointcut
- Thymeleaf
- QueryDSL
- SpringBoot
- http
- JPQL
- 백준
- springdatajpa
- kotlin
- Greedy
- 그리디
- 김영한
Archives
- Today
- Total
개발자되기 프로젝트
집합 본문
1. 예제
- tuple : 다양한 타입이 여러개 일 경우 사용
- tuple.get~ 으로 꺼낼 수 있음.
- 실무에서는 DTO로 꺼내서 사용함.
public void aggregation(){
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(100);
}
2. GroupBy
- groupBy() : 어떤거를 기준으로 그룹으로 묶을래?
- groupBy(team.name) : 팀의 이름으로 묶음
- tuple은 team 이름을 기준으로 묶여있음(팀 이름, 해당 팀 멤버의 나이 평균)
- Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException:
Column "TEAM1_.NAME" must be in the GROUP BY list; SQL statement: - team.name으로 GroupBy되어야 한다고 에러가 발생.
/**
* 팀 이름과 각 팀의 평균 연령 구하기
* @throws Exception
*/
@Test
public void group() throws Exception{
List<Tuple> result = queryFactory
.select(team.name, member.age.avg())
.from(member)
.join(member.team, team)
.groupBy(team.name) //팀 이름으로 그룹
.fetch();
Tuple teamA = result.get(0);
Tuple teamB = result.get(1);
assertThat(teamA.get(team.name)).isEqualTo("teamA");
assertThat(teamA.get(member.age.avg())).isEqualTo(15);
assertThat(teamB.get(team.name)).isEqualTo("teamB");
assertThat(teamB.get(member.age.avg())).isEqualTo(35);
}
3.GitHub : 210901 GroupBy
'인프런 > [인프런] QueryDsl' 카테고리의 다른 글
서브쿼리, SubQuery (0) | 2021.09.02 |
---|---|
Join (0) | 2021.09.02 |
페이징 (0) | 2021.09.01 |
정렬 (0) | 2021.09.01 |
결과 조회 (0) | 2021.09.01 |
Comments