출처: 패스트 캠퍼스 - 한 번에 끝내는 데이터 분석 초격차 패키지 Online.
컬럼 가공하기
cast / left, substring, rignt / concat / coalesce
목차 |
1. 숫자를 문자열로 바꿔주기: cast |
2. 문자열 컬럼에서 일부만 잘라내기: left, substring, right |
3. yyyy-mm-dd 형식으로 이어주기: concat, || |
4. null값 임의값으로 바꾸기: coalesce |
1. 숫자를 문자열로 바꿔주기: cast
dt: 날짜(숫자데이터)
cast: 형태를 바꿔주는 쿼리
varchar: 문자 형식
1) dt데이터만 적용했을 때

2) cast함수를 이용하여 형태를 바꾸기: cast (a as b)
select dt, cast (dt as varchar)
from online_order oo

숫자형식(nn,nnn,nnn)에서 문자형식(nnnnnnnn)으로 변경됩니다
3) 컬럼명 변경해주기: as
as를 사용하여 하단의 컬럼명을 dt에서 yyyymmdd로 변경합니다

2. 문자열 컬럼에서 일부만 잘라내기: left, substring, right
1) dt데이터를 문자로 바꾼 상태에서 년도 데이터만 남기기 : left
select dt, left(cast(dt as varchar),4) as yyyy >>>> 해석: 앞에서 4개(2021)의 글자만 남기기(left)
from online_order oo

2) dt데이터를 문자로 바꾼 상태에서 년도와 월별 데이터 남기기: substring
select dt, left(cast(dt as varchar),4) as yyyy,
substring(cast (dt as varchar),5,2) as mm >>>> 해석: 앞에서 5번째부터 글자2개 남기기
from online_order oo

3) dt데이터를 문자로 바꾼 상태에서 년도, 월별, 날짜별 데이터 남기기: right
select dt, left(cast(dt as varchar),4) as yyyy,
substring(cast(dt as varchar),5,2) as mm,
right(cast(dt as varchar),2) as dd >>>> 해석: 오른쪽부터 2개 남기기
from online_order oo

3. yyyy-mm-dd 형식으로 이어주기: concat, ||
1) concat함수로 이어주기 concat( yyyy , '-', mm, '-', dd )
select dt,
concat(
left(cast(dt as varchar),4), '-',
substring(cast(dt as varchar),5,2), '-',
right(cast(Dt as varchar),2)) as yyyymmdd
from online_order oo

2) | 키 이용
키보드의 Enter키 위에 있는 |키를 이용합니다

select dt,
left(cast(dt as varchar),4) || '-' ||
substring(cast(dt as varchar),5,2) || '-' ||
right(cast(Dt as varchar),2) as yyyymmdd
from online_order oo

4. null값인 경우, 임의값으로 바꿔주기
0) 주문 테이블에 있었던 null값을 조회해줍니다

1) coalesce(a,b) : 첫번째 컬럼(a)이 null이면, 컴마뒤의 값(b)으로 변환
select oo.userid, coalesce (oo.userid, 'NA') >>>> 해석: oo.userid가 null값이면, 'NA'로 변환해줘
from online_order oo
left join user_info ui on oo.userid = ui.userid

2) coalesce(a,b) 에서 a와 b가 동일한 유형(숫자 or 문자) 이어야한다
userid는 숫자형 / 'NA'는 문자형이기 때문에, 'NA'를 숫자 0으로 바꿔준다.
select oo.userid, coalesce (oo.userid, 0)
from online_order oo
left join user_info ui on oo.userid = ui.userid

'데이터 교육 > SQL' 카테고리의 다른 글
[SQL] 11. 날짜 관련 함수 활용하기 (0) | 2023.05.29 |
---|---|
[SQL] 10. case when절 (0) | 2023.05.29 |
[SQL] 08. join절 (0) | 2023.05.29 |
SQL 기본 문법 정리 (0) | 2023.05.24 |
[SQL] 06. having 절 (0) | 2023.05.24 |