📝 627. Swap Salary
🔹 급여 교환
중간 임시 테이블 없이 단일 업데이트 문을 사용하여 모든 'f' 및 'm' 값을 바꾸는 솔루션을 작성합니다(즉, 모든 'f' 값을 'm'으로 또는 그 반대로 변경).
단일 업데이트 문을 작성해야 하며 이 문제에 대한 선택 문을 작성하지 마십시오.
📝 문제설명
이 문제는 급여 교환(Swap Salary) 문제로, Salary 테이블에 있는 sex 컬럼의 값 중 'm'과 'f'를 서로 바꾸는 작업을 수행합니다.
조건은 단일 UPDATE 문을 사용하여 중간 임시 테이블 없이 해결해야 합니다.
📊 테이블 구조
Salary 테이블
Column Name | Type |
id | int |
name | varchar |
sex | ENUM |
salary | int |
💡 SQL 문제 해결 방법
- CASE WHEN 문을 사용하여 조건에 따라 값을 교환합니다.
- 단일 UPDATE 문을 사용해야 하므로 서브쿼리나 임시 테이블 없이 바로 변경해야 합니다.
- CASE 문을 활용하여 'm'을 'f'로, 'f'를 'm'으로 변환합니다.
728x90
🖥️ SQL 풀이
UPDATE Salary
SET sex = CASE WHEN sex = 'm' THEN 'f' ELSE 'm' END
🔍 쿼리 분석
- UPDATE 문은 테이블의 데이터를 수정하는 명령어입니다.
- CASE WHEN 문은 조건문을 사용하여 특정 조건에 맞는 값을 반환합니다.
- 이 쿼리는 sex 컬럼의 값이 'm'이면 'f'로 변경하고, 그렇지 않으면 'm'으로 변경합니다.
📌 실행 예제
📊 입력 데이터
Salary 테이블
id | name | sex | salary |
1 | A | m | 2500 |
2 | B | f | 1500 |
3 | C | m | 5500 |
4 | D | f | 500 |
쿼리 실행 결과
id | name | sex | salary |
1 | A | f | 2500 |
2 | B | m | 1500 |
3 | C | f | 5500 |
4 | D | m | 500 |
- (1, A)와 (3, C)는 성별이 m에서 f로 변경
- (2, B)와 (4, D)는 성별이 f에서 m으로 변경
🎯 결론
이 문제는 단일 UPDATE 문과 CASE WHEN 절을 활용하여 데이터를 효율적으로 수정하는 방법을 연습할 수 있습니다. 실무에서는 성별이나 상태 값과 같은 ENUM 타입 데이터를 간단히 변경할 때 매우 유용합니다.
또한, 임시 테이블 없이 데이터를 직접 수정하는 방식은 성능과 코드의 간결성 면에서 중요한 기법입니다.
더 많은 SQL 문제 풀이를 보고 싶다면 LeetCode SQL 문제 모음을 확인해 보세요! 🚀
728x90
반응형
'LeetCode' 카테고리의 다른 글
[LeetCode] 1084. Sales Analysis 3 (2) | 2025.03.05 |
---|---|
[LeetCode] 1050. Actors and Directors Who Cooperated At Least Three Times (2) | 2025.03.04 |
[LeetCode] 607. Sales Person (0) | 2025.02.28 |
[LeetCode] 586. Customer Placing the Largest Number of Orders (2) | 2025.02.28 |
[LeetCode] 577. Employee Bonus (0) | 2025.02.27 |