
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
안녕하세요.
튜터님께서 아래와 같이 피드백을 주셨습니다.
"CASE 문에서 조건은 위에서부터 차례로 평가되기 때문에, 범위가 넓은 조건이 먼저 오면 아래 조건들이 실행되지 않고 무시될 수 있습니다."
이 때, case when 문의 구분하는 순서에 대해 궁금한 점이 있어 질문 드립니다.
코드를 아래와 같이 3만 이하, 1만 이하, 5천 이하로 구분하게 되면 아래와 같이 정리가 된다고 생각했습니다.
3만 이하로 설정된 값 중~1만 이하는 재구분
1만 이하로 설정된 값 중~5천 이하는 재구분
3만 이하로 모두 설정했으므로 해당 CASE들은 더 이상 구분되지 않고, 해당 행까지 구분되지 않은 데이터들에 대해서만 when 이하가 적용 되나요?
감사합니다.
작성한 코드 및 에러 메세지
select
restaurant_name,
case
when avg_price > 30000 then 4
when avg_price <= 30000 then 3
when avg_price <= 10000 then 2
when avg_price <= 5000 then 1
end "price_group",
case
when avg_age < 30 then 1
when avg_age >= 30 and avg_age < 40 then 2
when avg_age >= 40 and avg_age < 50 then 3
else 4
end "age_group"
from
(
select
a.restaurant_name,
avg(a.price) "avg_price",
avg(b.age) "avg_age"
from food_orders a
inner join customers b on a.customer_id = b.customer_id
group by 1
) cal
order by restaurant_name;
