안녕하세요.
이번 포스팅에서는, 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으로 변환됩니다
'IT_SQL' 카테고리의 다른 글
[분석실습] SQL 데이터 가공하기(Case When, 범위/그룹화) (0) | 2021.11.12 |
---|---|
Question) 문자열 공백 -> null 변환 (0) | 2021.11.11 |
[분석 실전] SQL JOIN 주의사항. duplication, 중복 키! (0) | 2021.11.06 |
[분석 실전] SQL JOIN 심화(2). join 종류와 구문 팁! inner join, left join~ (0) | 2021.11.04 |
[분석 실전] SQL JOIN 심화. where절 추가하기, 테이블 연결하기 구문 팁! (0) | 2021.11.03 |