inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! Querydsl

집합

group by 결과에 대한 질문입니다.

413

베지밀

작성한 질문수 6

3

안녕하세요 영한님 

강의 재밌게 잘 듣고 있습니다. 간단한 질문이 있습니다~!

group by를 한 다음에 

Tuple teamA = result.get(0);

으로 알려주셨는데 0번 index로 가져온 결과값이 Team B가 아니라 Team A에 관한 집계 결과를 보장하는지 궁금합니다. (내부적으로 정렬 같은 방식이 일어나는건가요..??ㅎㅎ)

java JPA

답변 1

7

OMG

안녕하세요 베지밀님.

답변 드리기위해 groupBy에 대해서 찾아보니 다음과 같은 내용을 확인하였고,

  • GROUP BY 절과 HAVING 절의 특징
    • HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있다.
    • GROUP BY 절에 의한 소그룹별로 만들어진 집계 데이터 중, HAVING 절에서 제한 조건을 두어 조건을 만족하는 내용만 출력한다.
    • HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치한다.
  • 일부 데이터베이스의 과거 버전에서 GROUP BY 절에 명시된 칼럼의 순서대로 오름차순 정렬을 자동으로 정렬(비공식적인 지원이었음)하는 경우가 있었으나, 원칙적으로 관계형 데이터베이스 환경에서는 ORDER BY 절을 명시해야 데이터 정렬이 수행된다.
  • ANSI/ISO 기준에서도 데이터 정렬에 대한 내용은 ORDER BY 절에서만 언급되어있지, GROUP BY 절에는 언급되어 있지 않다.

출처: http://www.gurubee.net/lecture/2373

.

H2 database,(1.4.200) mysql(8.0)에서 테스트 해보았습니다.(검은 콘솔창은 MySQL입니다. 동일한 H2와 동일한 쿼리로 진행하였습니다.)

- team의 name을 group by로 출력한 결과 h2, mysql 둘 다 이름을 기준으로 출력 되었습니다. 

.

- team의 name 중 teamA를 teamC로 바꾸고(update 쿼리) 실행한 결과 h2는 이름을 기준으로 정렬 되었으나  mysql은 teamC가 먼저 출력되어 이름 순으로 출력되지 않았습니다.

.

블로그에 정리되어있는 내용과 두 데이터베이스의 실험 결과를 통해 group by의 순서를 모든 데이터베이스마다 (명시된 순서대로)보장하지 않는 다는 것을 확인할 수 있었습니다.

.

감사합니다.

1

김영한

OMG님 감사합니다!

SpringBoot 4.X에서의 Querydsl 설정

0

157

2

querydsl 오픈소스에 대한 질문

1

101

1

예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?

0

127

1

Querydsl 6.X버전에 대해서 어떻게 생각하시나요?

0

349

2

여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요

1

86

1

fetchResults()는 더이상 권장되지 않는다는데 맞나요?

0

172

1

querydsl sum() 메서드 없어요.

0

169

2

build 디렉터리 생성

0

152

2

자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?

0

123

2

현재 Querydsl에서 from절 서브쿼리를 지원하나요?

0

99

1

오타 제보 드립니다.

0

79

2

벌크 연산과 flush, clear

0

84

1

Run As Intellij 로 변경시 Q타입 import 불가

0

95

1

QHello import하기 문제 발생

0

157

2

등록된 함수 보는법(H2Dialect) 질문

0

76

2

5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의

1

209

2

[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??

1

213

1

querydsl 설정 문제

0

228

2

quey dsl 설정부분

0

168

2

count 쿼리 관련 질문입니다!

0

79

1

stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.

0

98

1

답변부탁드리겠습니다.

0

95

2

(OrderSpecifier)관련 내용 어디있을가요

0

68

1

중급문법 벌크연산에서

0

85

2