본문 바로가기

┤내일배움캠프├/[ 스터디 ] SQL

SQL 3주차②(if문)

728x90

if 문 = 다 select에 씀

select  if(조건, 조건을 충족할 때, 조건을 충족하지 못할 때)

 

문제 1. ‘문곡리’가 평택에만 해당될 때, 평택 ‘문곡리’만 ‘문가리’로 수정

결과

 

select addr '원래 주소', 결과에서 '원래 주소'로 소환했으므로 이를 따르고 쉼표(,) 잊지 말 것

           if(addr like '%평택%', replace(addr, '문곡리', '문가리'), addr) '바뀐주소'

           단어 수정 요청이므로 replace를 써줘야 함

           if(조건, 참, 거짓) 거짓일 때는 원래 addr을 불러올 것을 추가해줘야 함(공백으로 두면 안 됨)

from   food_orders

where addr like '%문곡리%' '평택' 소환보다는 제대로 바뀌었는지 확인하고 싶은 '문곡리'를 넣는 게 나음

select addr '원래 주소',
       if(addr like '%평택%', replace(addr, '문곡리', '문가리'), addr) '바뀐주소'
from food_orders
where addr like '%문곡리%'

 

문제 2. gmail의 경우 누락된 @ 추가하기

결과

 

풀이 한 번에 식이 만들어지지 않는 관계로, 하나하나 쪼개서 바꿔봄

[1단계] 결과의 컬럼들 만들어보기

select email '이메일 도메인',
       count(1) '고객 수',
       avg(age) '평균연령'
from customers
group by 1

 

[2단계] 이메일 컬럼 수정 - 도메인별로 추출하기 [substr]

select substr(email, 10) '이메일 도메인', # substr(컬럼, 몇 번째 글자?, 몇 개까지?)
       count(1) '고객 수',
       avg(age) '평균연령'
from customers
group by 1

 

결과를 보면, gmail은 @가 누락되어 있는 관계로 도메인별 추출에서 제외된 것을 알 수 있음.

 

[3단계] 이메일 컬럼 수정 - gmail을 @gmail로 바꾸기 [replace]

중요 substr(email, 10) 의 주황색 표기된 email안에 if문을 넣어야 함!

email 자리에 넣어야 하는 것(아래 if문)을 미리 다른 곳에 작성하고 옮겨 적자. 안 그럼 괄호/작은따옴표/쉼표 지옥에서 헤맬 수 있음

if(email like '%gmail%', replace(email, 'gmail', '@gmail'), email)

select substr(if(email like '%gmail%', replace(email, 'gmail', '@gmail'), email), 10) '이메일 도메인',
       count(1) '고객 수',
       avg(age) '평균연령'
from customers
group by 1

728x90

google.com, pub-9332256070510669, DIRECT,f08c47fec0942fa0