개발은 처음이라 개발새발

UPDATE 와 CASE를 활용한 퀴즈[LeetCode] 본문

mysql

UPDATE 와 CASE를 활용한 퀴즈[LeetCode]

leon_choi 2023. 5. 29. 19:34
반응형

https://leetcode.com/problems/swap-salary/

 

Swap Salary - LeetCode

Can you solve this real interview question? Swap Salary - Table: Salary +-------------+----------+ | Column Name | Type | +-------------+----------+ | id | int | | name | varchar | | sex | ENUM | | salary | int | +-------------+----------+ id is the primar

leetcode.com

이번 시간에는 DML 명령어 중 UPDATE를 활용한 퀴즈를 풀어보려고합니다. 문제를 보겠습니다.

Input: 
Salary table:
+----+------+-----+--------+
| id | name | sex | salary |
+----+------+-----+--------+
| 1  | A    | m   | 2500   |
| 2  | B    | f   | 1500   |
| 3  | C    | m   | 5500   |
| 4  | D    | f   | 500    |
+----+------+-----+--------+
Output: 
+----+------+-----+--------+
| id | name | sex | salary |
+----+------+-----+--------+
| 1  | A    | f   | 2500   |
| 2  | B    | m   | 1500   |
| 3  | C    | f   | 5500   |
| 4  | D    | m   | 500    |
+----+------+-----+--------+

Salary 테이블이 있고 sex 컬럼의 성별을 바꾸라는 문제입니다. 

1. 기본
UPDATE 테이블명 SET 컬럼 = 값;
__________________________________
EX)
UPDATE Salary SET Salary = Salary + 100;

2. 지정 행 UPDATE
UPDATE 테이블명 SET 컬럼 = 값 WHERE 조건;
_____________________________________________
EX)
UPDATE Salary SET Salary = Salary + 100 WHERE id =2;

이경우에는 첫번째 기본 UPDATE 구문을 활용해야 합니다. 하지만 이번 퀴즈는 두개 이상의 컬럼을 한꺼번에 바꿔야 하는데요. 이렇게 바꾸기 위해서는 '값' 부분에서 CASE...WHEN...THEN 구문을 활용해보면 좋을 거 같습니다. 

UPDATE 테이블명 SET 컬럼 = 값;
________________________________________________________
UPDATE Salary SET SEX = CASE 
            		  WHEN SEX = 'f' THEN 'm'
            		  WHEN SEX = 'm' THEN 'f' END
________________________________________________________
output:
| id | name | sex | salary |
| -- | ---- | --- | ------ |
| 1  | A    | f   | 2500   |
| 2  | B    | m   | 1500   |
| 3  | C    | f   | 5500   |
| 4  | D    | m   | 500    |

네 이렇게 퀴즈를 풀어봤습니다. 처음에는 어떻게 한꺼번에 바꾸라는 건지 앞이 막막했는데 문득 CASE구문이 생각나 적용해봤습니다. 개인적으로 SQL 퀴즈를 풀면서 여러구문을 혼합해서 사용할 수 있는 방법을 알아가고 있습니다. 실무에도 충분히 적용할 수 있는 것들이라 퀴즈를 꾸준히 풀어보는 걸 추천드립니다.

반응형

'mysql' 카테고리의 다른 글

서브쿼리 간단정리  (0) 2023.05.31
서브쿼리를 활용한 DELETE [LeetCode]  (0) 2023.05.30
INSERT, UPDATE, DELETE 간단 정리  (0) 2023.05.27
MySQL Union 퀴즈 [해커랭크]  (0) 2023.05.21
MySQL DATE_ADD & Self Join 퀴즈2 [LeetCode]  (0) 2023.05.09