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