Leetcode Database (MySQL) 문제 풀이 - 2

Kim Dae Hyun·2022년 2월 21일
0

Algorithm

목록 보기
29/29

186. Delete Duplicate Emails

  • 중복되는 emaildelete 한다.
  • 중복되는 두 email이 있을 때 id가 작은 것을 남긴다.
delete from Person where id not in (
	select id from (
		select min(id) as id
		from Person
		group by email
	) as tmp
);

not in 조건에는 삭제되지 않는 id가 조회되도록 한다.

중복을 제거하고자 하는 칼럼(email)을 기준으로 group by를 하게 되면 일단 중복은 제거된다.

group by로 중복 제거 후 id 기준 작은 값을 살리기 위해 min(id)를 사용한다.


197. Rising Temperature

  • 바로 이전 날짜보다 기온이 상승한 row의 id를 조회하라
select w1.id
from Weather w1, Weather w2
where w1.temperature > w2.temperature
    and datediff(w1.recordDate, w2.recordDate) = 1;

datediff

datefidd(날짜1, 날짜2);

[ 날짜1 - 날짜2 ]

620. Not Boring Movies

  • descriptionboring이 아니고 id가 홀수인 row를 rating 기준 내림차순 정렬하여 조회하라.
select id, movie, description, rating
from Cinema
where description != 'boring' and mod(id,2)!=0
order by rating desc;

나머지 연산

mod(칼럼명, 나눌값)

626. Exchange Seats

  • id가 홀수번째인 경우 id에 +1
  • id가 짝수번째인 경우 id에 -1
  • id가 홀수번째이고 마지막 id인 경우 현재 id 그대로 출력

위 세가지 조건을 case-when-end 문으로 표현한다.

select (
    case 
        when mod(id, 2) = 1 and id = (select count(*) from Seat) then id
        when mod(id, 2) = 1 then id+1
        else id-1
    end
) as id, student
from Seat
order by id;

조건에 의해 변경한 id대로 조회된 결과가 정렬되도록 order by 사용


case
  when 조건1when 조건2elseend as 뱔칭;

627. Swap Salary

  • sexm인 경우 ff인 경우 m으로 변경하라
update Salary
set sex = (
    case sex
        when 'f' then 'm'
        else 'f'
    end
);
UPDATE 테이블명
SET 칼럼1 =1, 칼럼2 =2;

profile
좀 더 천천히 까먹기 위해 기록합니다. 🧐

0개의 댓글