
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
안녕하세요, SQL 실무 적용하면서 질문사항이 있어서 남깁니다.
case절 관련 질문인데요. CASE절 작성 순서도 쿼리문을 실행하는데 영향을 미치는지 궁금합니다.
제가 1번 코드로 작성했을 때는 '정보 없음'이라고 떠야 하는 데이터가 '50대 이상'으로 구분되어 보여졌는데,
CASE절 순서를 2번 코드처럼 수정하고 나니 제가 원하는대로 '정보없음'은 '정보없음'으로 잘 뜨더라고요.
혹시 순서의 영향이 있는건지, 순서의 영향이 있다고 하더라도 이 케이스는 어떤 이유에서 1번 코드는 문제가 있었던 건지 궁금합니다!
답변 부탁드리겠습니다~~!
[1번 코드]
select mb_id, mb_name, mb_sex, mb_birth, SUBSTRING(mb_birth, 1, 4),
(case when SUBSTRING(mb_birth, 1, 4) >= '1994' and SUBSTRING(mb_birth, 1, 4) <= '2003' then '20대'
when SUBSTRING(mb_birth, 1, 4) <= '1993' and SUBSTRING(mb_birth, 1, 4) >= '1984' then '30대'
when SUBSTRING(mb_birth, 1, 4) <= '1983' and SUBSTRING(mb_birth, 1, 4) >= '1974' then '40대'
when SUBSTRING(mb_birth, 1, 4) <= '1973' then '50대 이상'
when SUBSTRING(mb_birth, 1, 4) >= '2004' then '10대'
when ifnull(SUBSTRING(mb_birth, 1, 4),'') = '' then '정보 없음'
else '기타' end) as age
from g5_member
[2번 코드]
select mb_id, mb_name, mb_sex, mb_birth, SUBSTRING(mb_birth, 1, 4),
(case when ifnull(SUBSTRING(mb_birth, 1, 4),'') = '' then '정보 없음'
when SUBSTRING(mb_birth, 1, 4) >= '1994' and SUBSTRING(mb_birth, 1, 4) <= '2003' then '20대'
when SUBSTRING(mb_birth, 1, 4) <= '1993' and SUBSTRING(mb_birth, 1, 4) >= '1984' then '30대'
when SUBSTRING(mb_birth, 1, 4) <= '1983' and SUBSTRING(mb_birth, 1, 4) >= '1974' then '40대'
when SUBSTRING(mb_birth, 1, 4) <= '1973' then '50대 이상'
when SUBSTRING(mb_birth, 1, 4) >= '2004' then '10대'
else '기타' end) as age
from g5_member
