설명: expr1이 NULL이면 expr2를 반환하고, 그렇지 않으면 expr1을 반환합니다.
SELECT IFNULL(customer_name, 'Unknown') FROM customers;
고객 이름이 NULL인 경우 'Unknown'으로 대체합니다.
설명: COALESCE는 첫 번째 NULL이 아닌 값을 반환합니다. 여러 인수를 받을 수 있으며, 각 인수를 순서대로 평가하여 첫 번째로 NULL이 아닌 값을 반환합니다.
SELECT COALESCE(phone_number, email, 'No contact information') FROM contacts;
연락처가 NULL이면 이메일을 사용하고, 둘 다 NULL일 경우 'No contact information'을 반환합니다.
설명: expr1과 expr2가 동일하면 NULL을 반환하고, 그렇지 않으면 expr1을 반환합니다. 주로 값이 특정 조건과 같을 때 그 값을 NULL로 변환하는 데 사용됩니다.
SELECT NULLIF(salary, 0) FROM employees;
급여가 0이면 NULL을 반환하고, 그렇지 않으면 급여 값을 반환합니다.
설명: CASE 문은 IF-ELSE 문과 유사하게 조건에 따라 여러 값을 선택할 수 있습니다. 더 복잡한 논리를 적용할 수 있는 유연한 방법입니다.
SELECT CASE WHEN age < 18 THEN 'Minor' WHEN age >= 18 AND age < 65 THEN 'Adult' ELSE 'Senior' END AS age_group FROM people;
나이에 따라 'Minor', 'Adult', 'Senior'를 반환합니다.
customers 테이블에서 고객의 first_name이 NULL일 경우 'No First Name'으로 표시하고, last_name이 NULL일 경우 'No Last Name'으로 표시하여 각 고객의 이름을 출력하세요.
테이블 구조:
customers
: 고객 정보customer_id
: 고객 IDfirst_name
: 이름last_name
: 성SELECT customer_id, IFNULL(first_name, 'No First Name') AS first_name, IFNULL(last_name, 'No Last Name') AS last_name FROM customers;
employees 테이블에서 phone_number가 NULL이면 email을, 둘 다 NULL이면 'No Contact Info'를 반환하세요. 그리고 직원들의 salary가 0이면 NULL로 처리하여 출력하세요.
테이블 구조:
employees
: 직원 정보employee_id
: 직원 IDphone_number
: 전화번호email
: 이메일salary
: 급여SELECT employee_id, COALESCE(phone_number, email, 'No Contact Info') AS contact_info, NULLIF(salary, 0) AS salary FROM employees;
orders 테이블에서 order_total이 NULL이거나 0인 경우 'Pending'으로 표시하고, 그렇지 않으면 해당 금액을 그대로 출력하세요. 또한, 주문 상태가 completed이면 'Shipped', processing이면 'In Progress', 그 외는 'Unknown'으로 표시하세요.
테이블 구조:
orders
: 주문 정보order_id
: 주문 IDorder_total
: 주문 총액status
: 주문 상태 (e.g., completed
, processing
)SELECT order_id, COALESCE(NULLIF(order_total, 0), 'Pending') AS total, CASE WHEN status = 'completed' THEN 'Shipped' WHEN status = 'processing' THEN 'In Progress' ELSE 'Unknown' END AS order_status FROM orders;
students 테이블에서 각 학생의 성적을 기준으로 학점을 부여하고, 다음 조건에 따라 출력하세요.
테이블 구조:
students
: 학생 정보student_id
: 학생 IDscore
: 성적is_honors
: 우등생 여부 (1이면 우등생)SELECT student_id, COALESCE( CASE WHEN score >= 90 THEN CASE WHEN is_honors = 1 THEN 'Honors A' ELSE 'A' END WHEN score >= 80 THEN 'B' WHEN score >= 70 THEN 'C' ELSE 'F' END, 'Grade Not Available') AS grade FROM students;
products 테이블에서 제품의 price가 NULL이거나 0이면 'Not Available'로 표시하고, 그 외의 경우에는 가격을 그대로 표시하세요. 그리고 discount가 NULL이거나 0이면 가격을 그대로 출력하고, 그렇지 않으면 할인된 가격(= price - discount)을 표시하세요.
테이블 구조:
products
: 제품 정보product_id
: 제품 IDprice
: 가격discount
: 할인 금액SELECT product_id, COALESCE(NULLIF(price, 0), 'Not Available') AS price, COALESCE(NULLIF(price - discount, price), price) AS final_price FROM products;