SQL: 엑셀보다 쉽고 빠른 SQL 3-4
1. if
- if(조건, 조건 만족했을 때, 조건 만족하지 못했을 때)
- 조건에 따라 값 할당
- 예시
if(age >= 20, '20세 이상', '기타')
2. case
- case when 조건 1 then 값 1
when 조건 2 then 값 2
else 값 3 end
- 여러 개의 조건에 따라 값 할당
- 예시
case when cuisine_type = 'Korean' then '한식'
when cuisine_type = 'Japanese' then '일식'
else '기타' end "음식 종류"
학습하며 겪었던 문제점 & 에러 복기
1. 함수 안에 if문 넣기
- 틀린 이유: 괄호가 여러 번 중첩될 때, 괄호의 위치가 헷갈려 잘못 작성했다.
- 내가 한 시도:
select substr(if(email like '%gmail%', replace(email, 'gmail', '@gmail'), email, 10)) "이메일 도메인",
count(1) "고객 수",
avg(age) "평균 연령"
from customers
group by 1
- 해결 방법: 코드의 의미를 파악하며 괄호의 범위를 지정한다.
이 문제의 경우, substr(if문, 10) / if(조건, replace문, 조건 미충족 시 값) 과 같은 구성이다.
select substr(if(email like '%gmail%', replace(email, 'gmail', '@gmail'), email), 10) "이메일 도메인",
count(1) "고객 수",
avg(age) "평균 연령"
from customers
group by 1
- 개선점: 코드를 단순 암기하기보다 원리를 이해하고 의미를 파악하는 것이 더 도움이 된다.
함수를 처음 쓸 때부터 여는 괄호와 닫는 괄호 둘 다 쓴다. '()'