1. UNION, UNION ALL 차이점
1.1 UNION
1 2 3 4 5 6 7 8 9 | -- UNION SELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUAL UNION SELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUAL UNION SELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUAL -- Result 1 -- ID SUBJECT SCORE -- 1 수학 90 ; | cs |
1.2 UNION ALL
1 2 3 4 5 6 7 8 9 10 11 | -- UNION ALL SELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUAL UNION ALL SELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUAL UNION ALL SELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUAL -- Result 2 -- ID SUBJECT SCORE -- 1 수학 90 -- 1 수학 90 -- 1 수학 90 ; | cs |
UNION 을 사용하면 컬럼의 값이 모두 같은 값이며 중복되면 중복되는 컬럼 row를 제외하고 출력되지만
UNION ALL 을 사용하면 컬럼의 값이 모두 같은 값이며 중복되더라도 모든 컬럼 row가 출력된다.
2. GROUP BY와 HAVING 이해하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | -- GROUP BY와 HAVING 이해하기 SELECT A1.ID, A1.NAME, SUM(A1.SCORE) AS SCORE FROM ( SELECT 1 ID, '김상현' NAME, '영어' SUBJECT, 80 SCORE FROM DUAL UNION ALL SELECT 1 ID, '김상현' NAME, '수학' SUBJECT, 80 SCORE FROM DUAL UNION ALL SELECT 2 ID, '이상현' NAME, '영어' SUBJECT, 100 SCORE FROM DUAL UNION ALL SELECT 2 ID, '이상현' NAME, '수학' SUBJECT, 100 SCORE FROM DUAL ) A1 WHERE A1.NAME LIKE '%상현%' GROUP BY A1.ID, A1.NAME, SCORE HAVING SUM(SCORE) >= 170 -- RESULT -- ID NAME SCORE -- 2 이상현 200 ; | cs |
해당 쿼리를 통해
GROUP BY는 데이터들을 그룹별로 나눌수 있고.
WHERE 절에서 집계함수를 사용 할 수 없으므로
HAVING을 사용하여 집계함수를 넣어 조건비교를 하고 있다.
'전체 > Oracle' 카테고리의 다른 글
Oracle HINT (0) | 2019.04.11 |
---|---|
오라클 프로시저 만들기, 오라클 잡 등록하기 (0) | 2019.01.24 |
ORACLE 임시테이블 생성, 컬럼 데이터 유형 바꾸기( ADD, MODIFY, RENAME, DROP ) (2) | 2017.11.22 |
ORACLE 컬럼 중복값 제거(필터) 방법 정리 (0) | 2017.11.22 |
ORACLE WITH AS 사용방법 (0) | 2017.07.25 |