241124_TIL

J Lee·2024년 11월 24일
0

아무리 사소하더라도 배움이 없는 날은 없다.

SQL 문제풀이 복습


Leetcode

문제 링크
집계함수와 case when을 섞어서 쓰면
괜히 cte 여러 개 만들 거 없이 간단하게 해결할 수 있다.
1트(6/30) 때는 아무리 봐도 너무 쓸데없이 복잡했음ㅇㅇ

SELECT t.request_at                    AS "Day",
       ROUND(COUNT(CASE
                     WHEN t.status LIKE 'cancelled%' THEN t.id
                   end) / COUNT(*), 2) AS "Cancellation Rate"
FROM   Trips t
       LEFT JOIN Users u
              ON t.client_id = u.users_id
       LEFT JOIN Users u2
              ON t.driver_id = u2.users_id
WHERE  u.banned <> 'Yes'
       AND u2.banned <> 'Yes'
       AND t.request_at BETWEEN '2013-10-01' AND '2013-10-03'
GROUP  BY 1;

문제 링크
어차피 emp_id별로 최대 salary를 구하면 되므로
group by 1만 하면 된다.
왜 1트(8/11) 때는 group by 1,2,3라고 했을까..🤔

SELECT emp_id,
       firstname,
       lastname,
       MAX(salary) AS "salary",
       department_id
FROM   Salary
GROUP  BY 1
ORDER  BY 1;

문제 링크

SELECT artist,
       COUNT(*) AS "occurrences"
FROM   Spotify
GROUP  BY 1
ORDER  BY 2 DESC,
          1;
profile
기본기를 소홀히 하지 말자

0개의 댓글

관련 채용 정보