SQL - CASE: 초보자를 위한 친절한 가이드

안녕하세요, SQL 열정가 되고자 하는 여러분! 오늘 우리는 SQL CASE 문의 세계로 흥미로운 여정을 떠납니다. 프로그래밍에 새로운 사람이라고 걱정하지 마세요 - 저는 여러분의 친절한 가이드로, 복잡한 개념을 입이 딱딱하게 먹기 쉬운 조각으로 쪼개어드릴 것입니다. 커피 한 잔을 챙기고 편안하게 앉아, 함께 들어보겠습니다!

SQL - CASE

SQL CASE 문: 당신의 새로운 최고 친구

여러분이 바쁜 레스토랑 주방의 셰프라고 상상해보세요. 다양한 요리에 다양한 레시피가 있죠? 그렇다면 SQL CASE 문은 여러분의 레시피 책과 같습니다 - 다양한 조건에 따라 결정을 내리는 데 도움을 줍니다. SQL 쿼리에 "if-then-else" 논리를 추가하는 방법입니다. 멋지죠?

간단한 예제를 보겠습니다:

SELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN '수량이 30보다 많습니다'
WHEN Quantity = 30 THEN '수량이 30입니다'
ELSE '수량이 30보다 적습니다'
END AS QuantityText
FROM OrderDetails;

이 예제에서 우리는 주문 상세 테이블을 보고 있습니다. 각 주문에 대해 수량을 확인하고 설명을 제공합니다. 수량이 30보다 많으면 "수량이 30보다 많습니다"라고 말하고, 정확히 30이면 "수량이 30입니다"라고 말하며, 그 외의 경우에는 "수량이 30보다 적습니다"라고 말합니다.

CASE 문은 CASE 키워드로 시작하고 END로 끝납니다. 그 사이에는 우리의 조건(WHEN)과 각 조건에 대한 결과(THEN)가 있습니다. ELSE 절은 지정된 조건을 만족하지 못하는 경우를 처리합니다.

CASE 문과 ORDER BY 절: 스타일 있게 정렬

이제 좀 더 재미있는 부분으로 넘어가겠습니다. CASE 문을 ORDER BY 절에서 사용할 수 있다는 것을 알고 계신가요? 이를 통해 커스터마이즈된 정렬 규칙을 만들 수 있습니다. 책장을 완전히 독특한 방식으로 정리할 수 있는 것과 같은 느낌입니다!

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);

이 쿼리에서 우리는 고객을 정렬하고 있습니다. 고객이 도시를 기재했으면 도시로 정렬하지만, 도시가 NULL(없음)이면 나라로 정렬합니다. 정렬에 대한 백업 계획을 가지는 것처럼 지혜롭죠?

CASE 문과 GROUP BY 절: 기분 좋게 그룹화

다음으로 CASE가 GROUP BY와 어떻게 작동하는지 살펴보겠습니다. 이 조합은 초능력을 가진 그룹화 도구와 같습니다.

SELECT
CASE
WHEN Age < 18 THEN '18세 미만'
WHEN Age BETWEEN 18 AND 30 THEN '18-30'
WHEN Age BETWEEN 31 AND 50 THEN '31-50'
ELSE '50세 이상'
END AS AgeGroup,
COUNT(*) AS Count
FROM Customers
GROUP BY
CASE
WHEN Age < 18 THEN '18세 미만'
WHEN Age BETWEEN 18 AND 30 THEN '18-30'
WHEN Age BETWEEN 31 AND 50 THEN '31-50'
ELSE '50세 이상'
END;

여기서 우리는 고객을 연령 그룹으로 나눕니다. 우리는 CASE 문을 사용하여 그룹을 만들고, 같은 CASE 문을 GROUP BY 절에서 사용합니다. 이 쿼리는 각 연령 그룹에 얼마나 많은 고객이 있는지 알려줍니다. 대가족 모임에서 각 세대에 필요한 테이블 수를 계산하는 것과 같은 느낌입니다!

CASE 문과 WHERE 절: 조건부 필터링

CASE 문은 WHERE 절에서도 여러분의 비서가 될 수 있습니다. 데이터를 필터링하는 데 복잡한 조건을 만들 수 있습니다.

SELECT ProductName, UnitsInStock
FROM Products
WHERE
CASE
WHEN CategoryID IN (1,2,3) THEN UnitsInStock > 20
WHEN CategoryID IN (4,5,6) THEN UnitsInStock > 30
ELSE UnitsInStock > 40
END;

이 예제에서 우리는 제품의 재고 수준을 선택하고 있습니다. 하지만 필요한 재고 수준은 카테고리에 따라 다릅니다. 카테고리 1, 2, 3의 경우 20개 이상의 제품을 원하고, 카테고리 4, 5, 6의 경우 30개 이상을 원하며, 그 외의 경우는 40개 이상을 원합니다. 매장의 다양한 섹션에 대해 다른 재고 요구 사항을 가지는 것과 같은 느낌입니다!

CASE 문과 UPDATE: 지능적으로 데이터 변경

CASE 문은 SELECT 쿼리뿐만 아니라 데이터를 지능적으로 업데이트하는 데도 도움이 됩니다.

UPDATE Employees
SET Salary =
CASE
WHEN Department = 'IT' THEN Salary * 1.10
WHEN Department = 'Sales' THEN Salary * 1.05
ELSE Salary * 1.03
END;

이 쿼리는 부서에 따라 다른 급여 인상을 제공합니다. IT 부서는 10% 인상을 받고, Sales 부서는 5% 인상을 받으며, 그 외의 부서는 3% 인상을 받습니다. 산타 클로스처럼 돈을 나눠주는 것처럼, 하지만 장난감이 아니라 급여를 주는 것입니다!

CASE 문과 INSERT: 지능적으로 데이터 추가

마지막으로 CASE가 데이터 추가에 어떻게 도움이 되는지 보겠습니다.

INSERT INTO SalaryGrades (EmployeeID, Grade)
SELECT EmployeeID,
CASE
WHEN Salary < 30000 THEN '낮음'
WHEN Salary BETWEEN 30000 AND 50000 THEN '중간'
ELSE '높음'
END
FROM Employees;

여기서 우리는 직원의 급여에 따라 급여 등급을 새로운 테이블에 추가하고 있습니다. CASE 문을 사용하여 각 직원의 등급을 결정합니다. 특정 기준에 따라 성과 평가를 자동으로 할당하는 것과 같은 느낌입니다!

결론: 성공을 위한 CASE

그렇습니다, 여러분! 우리는 SQL CASE 문의 세계를 여행하며, 다양한 상황에서 어떻게 사용할 수 있는지 탐구했습니다. 간단한 결정에서 복잡한 데이터 조작까지, CASE 문은 여러분의 SQL 도구箱에서 강력한 도구입니다.

CASE 문을 마스터하려면 연습이 필요합니다. 두려워 말고 자신의 쿼리를 실험해보세요. 언제쯤 CASE 문을 프로처럼 사용할 수 있을 것입니다. 데이터와의 상호작용에 추가적인 논리와 유연성을 더해줍니다.

coding과 learning을 계속하시고, 가장 중요한 것은 즐기시세요! 프로그래밍의 세계는 매우 흥미롭습니다. 다음 번에 만나기 전까지, 행복한 쿼리 작성을 기원합니다!

방법 설명
CASE와 SELECT 결과 집합에서 조건부 출력 사용
CASE와 ORDER BY 조건에 따른 커스터마이즈 정렬 허용
CASE와 GROUP BY 조건 논리에 따른 그룹화 가능
CASE와 WHERE 복잡한 필터 조건 제공
CASE와 UPDATE 조건에 따른 데이터 업데이트
CASE와 INSERT 조건에 따른 지능적 데이터 추가

Credits: Image by storyset