데이터 형식 변환

SQL로 리포트 만들기

Tyler Pernes

Learning & Development Consultant

챕터 목표

SQL로 리포트 만들기

지저분한 데이터 형식

SQL로 리포트 만들기

문제 1: 형식별 함수

SQL로 리포트 만들기

문제 1: 형식별 함수

SQL로 리포트 만들기

문제 1: 형식별 함수

SQL로 리포트 만들기

문제 2: 테이블 결합(JOIN)

SQL로 리포트 만들기

문제 2: 테이블 결합(JOIN)

SQL로 리포트 만들기

문제 2: 테이블 결합(JOIN)

SQL로 리포트 만들기

문제 2: 테이블 합치기(UNION)

SQL로 리포트 만들기

문제 2: 테이블 합치기(UNION)

SQL로 리포트 만들기

오류 해석하기

형식별 함수 오류:

SELECT AVG(first_name)
FROM athletes;
ERROR: Function avg(character varying) does not exist

JOIN 오류:

SELECT country, continent
FROM countries AS c1
JOIN continents AS c2
ON c1.continent_id = c2.id;
ERROR: Operator does not exist: integer = character varying
SQL로 리포트 만들기

해결: CAST()로 감싸기

구문:

CAST(field AS type)

예시:

CAST(birthday AS date)
CAST(country_id AS int)
SQL로 리포트 만들기

함수용 CAST

SELECT DATE_PART('month',birthdate)
FROM birthdates;
ERROR: Can't run DATE_PART on string.
SELECT DATE_PART('month', 
       CAST(birthdate AS date)) 
FROM birthdates;
+-----+
| 04  |
| 05  |
+-----+

SQL로 리포트 만들기

JOIN용 CAST

SELECT a.id, b.id
FROM table_a AS a
JOIN table_b AS b
ON a.id = b.id;
ERROR: Cannot join ON varchar = int.
SELECT a.id, b.id
FROM table_a AS a
JOIN table_b AS b
ON a.id = CAST(b.id AS varchar);
Query Ran Successfully!

SQL로 리포트 만들기

데이터 형식 이슈 대비

  • 발생 시 바로 해결
  • 오류 메시지를 꼭 읽기
SQL로 리포트 만들기

데이터 형식 이슈 대비

SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'countries';
+--------------+--------------------+
| column_name  | data_type          |
|--------------|--------------------|
| id           | integer            |
| country      | character varying  |
| region       | character varying  |
+--------------+--------------------+
SQL로 리포트 만들기

데이터 형식 문서

SQL로 리포트 만들기

연습해 봅시다!

SQL로 리포트 만들기

Preparing Video For Download...