tak's data blog

LeetCode 문제풀이 (626, 1158) 본문

SQL

LeetCode 문제풀이 (626, 1158)

hyuntaek 2022. 6. 27. 23:23
반응형
SMALL

 

 

#626

연속된 id 2개를 바꾸는 문제이다. 특이 조건으로 홀수행으로 끝나면 마지막 행은 그대로 둔다는 점이다.

SELECT (CASE 
            WHEN id % 2 != 0 and counts != id THEN id + 1
            WHEN id % 2 != 0 and counts = id THEN id
        ELSE id -1 
        END )AS id, 
        student 
FROM Seat, 
    (SELECT count(*) as 'counts'
     FROM Seat
     ) as s_count
order by id asc

처음 마지막 행 조건을 안두고 풀었을 땐 잘 풀렸는데 마지막 조건을 생각하느라 시간이 걸렸다.

서브쿼리로 따로 count 테이블을 만들어주고 id 갯수와 원래 테이블과의 마지막 id숫자가 같은지 다른지 조건을 주어 해결하였다.

 

 

#1158

SELECT u.user_id as 'buyer_id',
       u.join_date,
       COUNT(o.buyer_id) as 'orders_in_2019' 
FROM Users u 
    LEFT JOIN Orders o 
    ON u.user_id = o.buyer_id and YEAR(o.order_date) ='2019'
GROUP BY u.user_id

처음 2019년이라는 조건 때문에 case when으로 풀려다가 그렇게 하게 된다면 전체 횟수를 세게 되어 오류가 발생하여 left join으로 해결하였다.

 

 

 

반응형
LIST

'SQL' 카테고리의 다른 글

LeetCode 문제풀이 (1795)  (0) 2022.07.04
LeetCode 문제풀이 (1393, 1407, 1484, 1581)  (1) 2022.07.01
LeetCode 문제풀이 (262)  (0) 2022.06.26
LeetCode 문제풀이 (184, 185)  (0) 2022.06.26
LeetCode 문제풀이 (176, 178, 180, 181, 182, 183)  (1) 2022.06.24