반응형
250x250
Notice
Recent Posts
Recent Comments
Link
영국 척척석사 유학생 일기장👩🏻🎓
(SQL) CASE 문 개념 및 연습문제 본문
728x90
반응형
1) CASE
- CASE 문은 항상 SELECT 절에 써야 함
- CASE는 WHERE, THEN, END 구성요소를 포함해야함
- ELSE는 다른 CASE 조건을 충족하지 않는 경우를 위한 선택적 구성 요소
- WHEN 사이에 조건 연산자 (WHERE) 를 사용하여 조건문 만들 수 있음 (AND, OR 사용 가능)
- 예시
SELECT id, account_id, occurred_at, channel,
CASE WHEN channel = 'facebook' OR channel = 'direct' THEN 'yes'
ELSE 'no' END AS is_facebook
FROM web_events
ORDER BY occurred_at
SELECT account_id, occurred_at, total,
CASE WHEN total > 500 THEN 'Over 500'
WHEN total > 300 AND total <= 500 THEN '301-500'
WHEN total > 100 AND total <= 300 THEN '101-300'
ELSE '100 or under' END AS total_group
FROM orders
2) 연습문제
- 각 주문의 'total' 항목 수를 기준으로 세 범주 각각의 주문 수를 표시하는 쿼리를 작성합니다. 세 가지 범주는 '2000 이상', '1000 ~ 2000 사이' 및 '1000 이하'입니다.
SELECT CASE WHEN total >= 2000 THEN 'At least 2000'
WHEN total >= 1000 AND total < 2000 THEN 'Between 1000 and 2000'
ELSE 'Less than 1000' END AS order_category,
COUNT(*) AS order_count
FROM orders
GROUP BY 1
- 구매와 관련된 금액을 기준으로 고객의 3가지 수준을 이해하려고 합니다. 최상위에는 모든 주문의 총 판매액이 '200,000' USD 이상인 모든 인원이 포함됩니다. 두 번째 수준은 '200,000~100,000' USD 사이입니다. 최저 수준은 '100,000' USD 이하인 경우입니다. 각 account와 연결된 level이 포함된 테이블을 제공하십시오. account name, 고객의 total sales of all orders 및 level을 제공해야 합니다. 가장 많이 지출하는 고객이 먼저 나열된 순서로 정렬하십시오.
SELECT a.name, SUM(total_amt_usd) total_spent,
CASE WHEN SUM(total_amt_usd) > 200000 THEN 'top'
WHEN SUM(total_amt_usd) > 100000 THEN 'middle'
ELSE 'low' END AS customer_level
FROM orders o
JOIN accounts a
ON o.account_id = a.id
GROUP BY 1
ORDER BY 2 DESC;
- 위의 문제와 동일한 조건에서 '2016' 및 '2017'에만 고객이 지출한 총 금액을 구하려고 합니다. 가장 많이 지출하는 고객이 먼저 나열된 순서로 정렬하십시오.
SELECT a.name, SUM(total_amt_usd) total_spent,
CASE WHEN SUM(total_amt_usd) > 200000 THEN 'top'
WHEN SUM(total_amt_usd) > 100000 THEN 'middle'
ELSE 'low' END AS customer_level
FROM orders o
JOIN accounts a
ON o.account_id = a.id
WHERE occurred_at > '2015-12-31'
GROUP BY 1
ORDER BY 2 DESC;
728x90
반응형
'코딩공부 > SQL' 카테고리의 다른 글
(SQL) 서브쿼리 연습문제 및 풀이 (0) | 2024.05.16 |
---|---|
(SQL) 서브쿼리 개념, 종류 및 예시 (0) | 2024.05.16 |
(SQL) DATE_TRUNC DATE_PART 개념 및 연습문제 (0) | 2024.05.13 |
(SQL) HAVING 개념 및 연습문제 (0) | 2024.05.13 |
(SQL) DISTNICT 개념 및 연습문제 (0) | 2024.05.13 |