IT_SQL

[분석실습] SQL 원하는 형식으로 데이터 가공(숫자->문자, 문자열 자르기/붙이기, 숫자null->0)

soyounism 2021. 11. 11. 18:21

안녕하세요.

이번 포스팅에서는, SQL의 데이터 가공 구문들을 준비했습니다.

실무 데이터 분석을 하신다면 꼼꼼히 봐주세요

 

SQL 데이터 가공

 

1. 숫자->문자열

 

아래 데이터의 sales_time 은 현재 숫자로 되어있습니다

문자열로 변환해보겠습니다

 

cast

select sales_time, cast(sales_time as varchar) as var_st
from transactions_amt_csv tac

문자열로 바꿔졌습니다. 헷갈리지 않도록 as 별칭도 지정했습니다

 

 

2. 문자열 컬럼에서 일부만 잘라내기

 

아래 sales_date 데이터(0000-00-00형식)에서 연도만 잘라보겠습니다

 

연, 월, 일 모두 잘라볼게요

맨 왼쪽 월은 left함수,

중간에 있는 월은 substring 함수

맨 오른쪽 일은 right함수를 사용합니다

(엑셀과 비슷하게 생각하시면됩니다. 엑셀에서는 mid죠)

select sales_date, left(sales_date, 4) as yyyy,
substring(sales_date , 6,2) as mon,
right(sales_date, 2) as dates 
from transactions_amt_csv tac

위 left, right 함수를 안쓰고 substring으로도 모두 바꿔줘도 같은결과가 나옵니다

select sales_date , substring(sales_date, 1,4) as yyyy,
substring(sales_date, 6,2) as mm,
substring(sales_date, 9,2) as dt
from transactions_amt_csv tac

 

* 참고로 두 함수 모두 같이 사용도 가능합니다.

숫자->문자열 변환하고, 잘라내기 쿼리를 겹쳐쓸 수 있습니다

select sales_time , left(cast(sales_time as varchar), 2) as va_st
from transactions_amt_csv tac

left나 substring 등 함수 중간에 cast함수를 겹쳐쓰기도 가능합니다!

 

 

3. yyyy-mm-dd 형식으로 이어주기

3-1. concat

select 

concat(이을 컬럼, 이을 컬럼, 이을 컬럼)

from 테이블

select sales_date , 
concat(
substring(sales_date, 1,4), '-',
substring(sales_date, 6,2), '-',
substring(sales_date, 9,2)
)
from transactions_amt_csv tac

 

3-2. || (엔터 위에 \+shift 키를 눌러주시면 나옵니다)

 -> 문자열을 이어주는 역할을 합니다(&와 같은 뜻입니다)

select

이을컬럼 || 이을컬럼 || 이을 컬럼

from 테이블

select sales_date , 
substring(sales_date, 1,4)|| '-'||
substring(sales_date, 6,2)|| '-'||
substring(sales_date, 9,2) as yyyymmdd
from transactions_amt_csv tac

동일한 결과가 나옵니다

 

4. null값인 경우 임의의 값으로 바꾸기

coalesce

아래 데이터에서 birth 값에 빈값. null이 포함되어 있습니다

 

COALESCE 함수를 활용해서 NULL값을 NA로 바꿔볼까요?

-> 오류가 납니다.

기존 BIRTH 컬럼은 숫자형이기 때문에 문자열 'NA'로는 변환할 수 없습니다

 

4-1. 숫자형 null -> 0 변환

이렇게 0으로 바꿔주면 오류가 나지 않고, NULL값이 0으로 변환됩니다