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 |