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 | 31 |
Tags
- matplotlib
- 티스토리
- 한빛미디어
- Google Analytics
- 리눅스
- Ga
- SQL
- Tistory
- Pandas
- Linux
- 서평단
- 텐서플로
- 월간결산
- 독후감
- Python
- MATLAB
- 파이썬 시각화
- MySQL
- 매틀랩
- tensorflow
- 블로그
- 딥러닝
- 시각화
- Visualization
- Blog
- python visualization
- 서평
- 파이썬
- 통계학
- 한빛미디어서평단
Archives
- Today
- Total
pbj0812의 코딩 일기
[SQL] CASE / UNION 실행 계획 비교 본문
0. 목표
- CASE / UNION 실행 계획 비교
1. 실습
1) 테이블 생성
CREATE TABLE sql_test.union_case
(
MakeYear datetime,
price1 int,
price2 int2
);
2) 데이터 삽입
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2010-01-01', 100, 0);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
INSERT INTO sql_test.union_case(MakeYear, price1, price2) VALUES('2021-01-01', 0, 100);
3) 데이터 확인
SELECT * FROM sql_test.union_case;
4) 문제
- 2020-01-01 이전은 price1 을 price 로 하고, 이후는 price2 를 price 로 지정
(1) UNION ALL 이용
SELECT
MakeYear, price1 AS price
FROM sql_test.union_case
WHERE MakeYear < '2020-01-01'
UNION ALL
SELECT
MakeYear, price2 AS price
FROM sql_test.union_case
WHERE MakeYear >= '2020-01-01';
(2) CASE 이용
SELECT
MakeYear,
CASE
WHEN MakeYear < '2020-01-01' THEN price1
WHEN MakeYear >= '2020-01-01' THEN price2
END AS price
FROM sql_test.union_case;
5) EXPLAIN 을 통한 실행 계획 확인
(1) UNION ALL
EXPLAIN
SELECT
MakeYear, price1 AS price
FROM sql_test.union_case
WHERE MakeYear < '2020-01-01'
UNION ALL
SELECT
MakeYear, price2 AS price
FROM sql_test.union_case
WHERE MakeYear >= '2020-01-01';
(2) CASE
EXPLAIN
SELECT
MakeYear,
CASE
WHEN MakeYear < '2020-01-01' THEN price1
WHEN MakeYear >= '2020-01-01' THEN price2
END AS price
FROM sql_test.union_case;
2. 참고
- SQL 레벨업
'ComputerLanguage_Program > SQL' 카테고리의 다른 글
[SQL] MySQL 이벤트를 통한 데이터 삭제 / 삽입 (0) | 2021.03.26 |
---|---|
[SQL] PRECEDING 을 통한 증감비교 (0) | 2021.03.15 |
[SQL] Mac에 PostgreSQL 설치 + DBeaver 연동 (2) | 2021.02.13 |
[SQL] MySQL 에서 FULL JOIN (0) | 2021.02.03 |
[SQL] MySQL 조회 결과 csv 파일로 만들기 (0) | 2020.11.11 |
Comments