SQLD

SQLD 개념정리 (GROUP BY, HAVING, ORDER BY, WITH THIS)

chojdsj 2023. 11. 6. 17:52
728x90

 

GROUP BY

 

- 여러 행들으로 구성된 그룹이 모여서 그룹당 하나의 결과를 돌려주는 “다중행 함수

 

- GROUP BY 절은 행들을 소그룹화한다.

 

- SELECT, HAVING, ORDER BY 절에서 사용 가능

 

- 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 통계정보를 얻을 때 사용

 

- ROLLUP이나 CUBE에 의한 소계가 계산된 결과에는 GROUPING(EXPR)=1이 표시됨

 

- 그 외의 결과에는 GROUPING(EXPR)=0이 표시된다.

 

 

 

 

 

 

HAVING

 

 

- WHERE 절과의 차이는 

 

1) GROUP BY 뒤에 온다는 것 (앞에 사용해도 에러는 발생하지 않음)

 

2) 집계함수를 사용 가능(WHERE은 사용 불가)

 

- WHERE 절 조건변경은 출력되는 레코드 개수가 변경되고, 결과 데이터 값이 변경될 가능성 O

 

- HAVING 절 조건변경은 출력되는 레코드 개수는 변경되지만, 결과 데이터 값은 변경 X

 

- SELECT - FROM - HAVING도 가능하다.

 

 

 

GROUP BY와 HAVING의 특징

- GROUP BY에 의한 소그룹별 만들어진 집계 데이터 중, HAVING 조건을 만족하는 내용만 출력

- 가능하면 GROUP BY 하기 전에, WHERE 절로 계산 대상을 줄이는게 효과적.

- 즉, WHERE절은 전체 데이터를 GROUP으로 나누기 전에 필요없는 조건을 미리 제거하는 역할

- HAVING절은 GROUP BY로 만들어진 소그룹에 대해서만 조건임을 명시하자.

 

 

 

 

 

ORDER BY

 

 

- ORDER BY에는 GROUP BY의 컬럼이나 SELECT의 컬럼만이 올 수 있다.

 

- 숫자형 오름차순 -> 작은 값 부터 출력,  날짜형 오름차순 -> 빠른 날 부터 출력

 

- [Oracle] NULL값을 가장 큰 값으로,    [SQL Server] NULL값을 가장 작은 값으로

 

 

 

 

 

 

WITH THIS

 

 

 

 

'SQLD' 카테고리의 다른 글

SQLD 개념정리 (계층형 질의, 셀프조인)  (0) 2023.11.07
SQLD 개념정리 (집합 연산자)  (0) 2023.11.07
SQLD 개념정리 (NULL, NULL 관련 함수)  (0) 2023.11.06
SQLD 개념정리 (JOIN)  (0) 2023.11.05
SQLD 개념정리 (함수)  (0) 2023.11.05