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 |
Tags
- DB 모델링
- DB
- 기초 선택자
- 마크다운
- 필기
- 웹개발 기초
- SQL
- 쿠버네티스
- view
- ORACLE 기초
- java 기초
- DDL
- 정보처리기사
- github
- 깃허브
- mybatis
- dql
- DB 개요
- 프로그래밍 기초
- oracle
- docker 소개
- MVC 패턴
- 쿠버네티스 기본 개념
- docker
- java
- Flutter
- 데이터베이스
- 기본 API
- 도커
- VS Code
Archives
- Today
- Total
핑구
03. GROUP BY HAVING 본문
📅 2021.09.10 ~ 2021.09.13
SELECT문 실행 순서
5: SELECT 컬럼명 AS 별칭, 계산식, 함수식
1: FROM 참조할 테이블명
2: WHERE 컬럼명|함수식 비교연산자 비교 값
3: GROUP BY 그룹으로 묶을 컬럼명
4: HAVING 그룹함수식 비교연산자 비교값
6: ORDER BY 컬럼명|별칭|컬럼순번 정렬 방식 (NULLS FIRST|LAST)
- 데이터를 검색하여 추출하기 위해서는 일단 해당 테이블을 먼저 불러와야 한다. 따라서 FROM이 가장 먼저 실행된다.
- SELECT 이후에 실행되는 것이 ORDER BY밖에 없기 때문에 ORDER BY에서만 SELECT에서 정해준 별칭을 사용할 수 있다. ORDER BY 이외 절은 모두 SELECT 이전에 실행되기 때문에 별칭이 만들어지기 이전이므로 사용할 수 없다.
GROUP BY
- 그룹 함수는 단 하나의 결과만 산출하기 때문에 그룹 여러 개를 같이 사용하는 경우 행의 개수가 달라서 오류가 발생한다. 그룹 함수의 결과를 컬럼 값에 따라 그룹화해서 출력해야 하는 경우 사용한다.
- 특정 컬럼으로 그룹화하여도 필수적으로 해당 컬럼을 출력해야 하는 것은 아니다.
- 여러 개의 컬럼을 동시에 그룹화하는 것도 가능하다.
HAVING
- 그룹 함수에 대한 조건을 부여하고 싶은 경우 사용된다. WHERE절은 SELECT절에 대한 조건을 의미하고, HAVING절은 GROUP BY절에 대한 조건을 의미한다.
ROLLUP/CUBE
- 집계 함수로 그룹 별로 산출한 결과 값을 집계하는 함수이다.
- ROLLUP : 그룹 별로 중간 집계 처리를 하는데, 인자로 전달받은 그룹 중에서 가장 먼저 지정된 그룹으로 집계를 진행한다.
- CUBE : 그룹 별로 중간 집계 처리를 하는데, 인자로 전달받은 모든 그룹에 대한 집계를 진행한다.
- GROUPING : ROLLUP이나 CUBE에 의한 집계 산출물을 구분할 수 있게 도와준다. 만약 ROLLUP/CUBE에 의한 집계 산출물이 인자로 전달받은 컬럼 집합의 산출물이면 0을 반환하고, 아니면 1을 반환한다.
집합 연산자
- 여러 개의 SELECT 결과물을 하나의 쿼리로 만드는 연산자이다.
- UNION : 합집합 (= OR)
- INTERSECT : 교집합 (= AND)
- UNION ALL : 합집합 + 교집합 (OR + AND)
교집합 부분의 컬럼 값을 중복하여 반환한다. - MINUS : 차집합
MINUS 아래에 존재하는 SELECT 결과물을 제외한다. - 집합 연산자의 경우 SELECT에 존재하는 컬럼이 다른 경우 어떤 컬럼을 가져와야 하는지 알 수 없기 때문에 결과가 출력되지 않는다.
GROUPING SETS
- 집합 연산자의 UNION ALL과 같은 역할을 하지만, 합치고 싶은 컬럼의 개수가 다른 경우 사용 가능하다. 아래와 같이 사용한다.
SELECT DEPT_CODE, JOB_CODE, MANAGER_ID, FLOOR(AVG(SALARY)) FROM EMPLOYEE GROUP BY GROUPING SETS ((DEPT_CODE, JOB_CODE, MANAGER_ID), (DEPT_CODE, MANAGER_ID), (JOB_CODE, MANAGER_ID));
'JAVA 웹 개발 > 2. Oracle' 카테고리의 다른 글
05. 서브쿼리 (0) | 2022.06.08 |
---|---|
04. JOIN (0) | 2022.06.08 |
02. 함수 (0) | 2022.06.08 |
01. DQL(SELECT) (0) | 2022.05.23 |
00. Oracle Database 개요 (0) | 2022.05.16 |