일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- torch
- Window Function
- 서브쿼리
- 논문리뷰
- nlp논문
- 그룹바이
- MySQL
- 자연어 논문 리뷰
- 표준편차
- 자연어 논문
- 자연어처리
- HackerRank
- SQL 날짜 데이터
- t분포
- NLP
- LSTM
- airflow
- 짝수
- update
- 코딩테스트
- 카이제곱분포
- GRU
- inner join
- leetcode
- sql
- 설명의무
- sigmoid
- SQL코테
- CASE
- Statistics
- Today
- Total
HAZEL
[SQL : CASE문 / UPDATE ] LeetCode : 627. Swap Salary 본문
627. Swap Salary
>> 문제
+-------------+----------+
| Column Name | Type |
+-------------+----------+
| id | int |
| name | varchar |
| sex | ENUM |
| salary | int |
+-------------+----------+
id is the primary key for this table.
The sex column is ENUM value of type ('m', 'f').
The table contains information about an employee.
Write an SQL query to swap all 'f' and 'm' values (i.e., change all 'f' values to 'm' and vice versa) with a single update statement and no intermediate temp table(s).
Note that you must write a single update statement, DO NOT write any select statement for this problem.
The query result format is in the following example:
Salary table:
+----+------+-----+--------+
| id | name | sex | salary |
+----+------+-----+--------+
| 1 | A | m | 2500 |
| 2 | B | f | 1500 |
| 3 | C | m | 5500 |
| 4 | D | f | 500 |
+----+------+-----+--------+
Result table:
+----+------+-----+--------+
| id | name | sex | salary |
+----+------+-----+--------+
| 1 | A | f | 2500 |
| 2 | B | m | 1500 |
| 3 | C | f | 5500 |
| 4 | D | m | 500 |
+----+------+-----+--------+
(1, A) and (2, C) were changed from 'm' to 'f'.
(2, B) and (4, D) were changed from 'f' to 'm'.
>> 문제푼 코드
UPDATE Salary
SET
sex = CASE sex
WHEN 'f' THEN 'm'
ELSE 'f'
END
** 이 문제의 포인트는 ' 값을 update ' 해준다는 점이다.
단순히, select 에서 case 문을 써줄때는 값이 변경되는 것이 아니라, then 값으로 보여지는 것이다.
UPDATE 의 구문은 : UPDATE 테이블 명 SET 열명 = 값 WHERE 조건식 ;
이 때, 조건에 따라서 ( WHERE 이 아닌, IF ) 다르게 열명을 변경하고 싶다면,
SET 절에 CASE 문을 넣어준다.
SET = CASE : CASE 문의 결과에 따라서 값을 변경해준다는 의미이다.
이 코드에서는 특정 코드에만 변경하라는 말이 없기 때문에 WHERE 은 생략한다.
꼭 기억해서, 이러한 유형이 있으면 이런식으로 풀자 !!
UPDATE Salary
SET
sex = CASE
WHEN sex = 'f' THEN 'm'
ELSE 'f'
END
** WHEN 의 기준을 안으로 집어 넣어도 가능하다.
** WHEN id = '1' THEN '일번사람' 이런식으로, SEX = CASE 여도 WHEN 의 기준을 달라질 수 있다.
leetcode.com/problems/swap-salary/