🖥 시작하며
SQL에서 사용하는 조건식과 프로시저에 대해 배운다.
🔍 CASE
SQL에서 조건부 처리를 위해 사용되는 표현식이다. 이는 프로그래밍 언어의 if-else 문과 유사한 기능이다. CASE 문을 사용하면 여러 조건을 평가하고 그에 따른 결과를 반환할 수 있다.
📌 일반 CASE
CASE WHEN condition1 THEN result1 -- 첫 번째 조건이 참이면 result1을 반환 WHEN condition2 THEN result2 -- 첫 번째 조건이 거짓이고 두 번째 조건이 참이면 result2를 반환 ELSE some_other_result -- 위의 모든 조건이 거짓일 때 some_other_result를 반환 END -- CASE 문의 끝을 나타냄
SELECT product_name, price, CASE WHEN price < 10 THEN 'Cheap' WHEN price BETWEEN 10 AND 50 THEN 'Moderate' WHEN price > 50 THEN 'Expensive' ELSE 'Unknown' END AS price_category FROM products;
📌 CASE 표현식
주어진 expression의 값을 각 WHEN 절의 value와 동등 비교한다. 즉, 더 간단한 비교만 가능하다.
CASE expression WHEN value1 THEN result1 -- expression이 value1과 같으면 result1을 반환 WHEN value2 THEN result2 -- expression이 value2와 같으면 result2를 반환 ELSE some_other_result -- expression이 어떤 WHEN 절의 값과도 일치하지 않으면 some_other_result를 반환 END -- CASE 표현식의 끝을 나타냄
SELECT customer_id, CASE WHEN (customer_id <= 100) THEN 'Premium' WHEN (customer_id BETWEEN 100 and 200) THEN 'Plus' ELSE 'Normal' END FROM customer
SELECT customer_id, CASE customer_id WHEN 2 THEN 'Winner' WHEN 5 THEN 'Second Place' ELSE 'Normal' END AS raffle_results FROM customer
SELECT SUM(CASE rental_rate WHEN 0.99 THEN 1 ELSE 0 END) AS number_of_bargins FROM film
이는 아래와 같다.
SELECT rental_rate, COUNT(*) AS number_of_films FROM film WHERE rental_rate = 0.99 GROUP BY rental_rate;
SELECT SUM(CASE rental_rate WHEN 0.99 THEN 1 ELSE 0 END) AS bargins, SUM(CASE rental_rate WHEN 2.99 THEN 1 ELSE 0 END) AS regular FROM film
댓글