241021_TIL

J Lee·2024년 10월 21일
0

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

SQL 문제풀이 복습


Leetcode

오늘은 특별히 기록해 둘 만한 풀이는 없음

문제 링크

SELECT user_id,
       count(DISTINCT follower_id) AS "followers_count"
FROM   Followers
GROUP  BY 1
ORDER  BY 1;

문제 링크

SELECT e1.employee_id,
       e1.name,
       count(DISTINCT e2.employee_id) AS "reports_count",
       round(avg(e2.age))             AS "average_age"
FROM   Employees e1
       JOIN Employees e2
         ON e1.employee_id = e2.reports_to
GROUP  BY 1
ORDER  BY 1;

문제 링크

SELECT event_day               AS "day",
       emp_id,
       sum(out_time - in_time) AS "total_time"
FROM   Employees
GROUP  BY 1,
          2;

프로그래머스

프로그래머스의 가장 안 좋은 점은
틀린 '사례'를 제공해 주지 않는다는 것.
어디서 왜 틀렸는지 빠르게 알아낼 수 없는 점은 답답하다.

비트 연산 문제는 그냥 포기.
문제 링크

WITH FRONTEND
     AS (SELECT Sum(CODE)
         FROM   SKILLCODES
         WHERE  CATEGORY = 'Front End')
SELECT ID,
       EMAIL,
       FIRST_NAME,
       LAST_NAME
FROM   DEVELOPERS
WHERE  SKILL_CODE & (SELECT *
                     FROM   FRONTEND) > 0
ORDER  BY 1;

문제 링크

SELECT ID,
       EMAIL,
       FIRST_NAME,
       LAST_NAME
FROM   DEVELOPERS
WHERE  SKILL_CODE & (SELECT CODE
                     FROM   SKILLCODES
                     WHERE  NAME = 'Python')
        OR SKILL_CODE & (SELECT CODE
                         FROM   SKILLCODES
                         WHERE  NAME = 'C#')
ORDER  BY 1;

문제 링크

SELECT ID,
       EMAIL,
       FIRST_NAME,
       LAST_NAME
FROM   DEVELOPER_INFOS
WHERE  SKILL_1 = 'Python'
        OR SKILL_2 = 'Python'
        OR SKILL_3 = 'Python'
ORDER  BY 1;

문제 링크
item_tree에서 부모자식 관계를 먼저 확인한 후
더 이상 자식이 없으면 완성템이다.
이 결과를 인라인뷰로 저장한 후 ITEM_INFO 테이블과 조인하면 끝.

SELECT i.ITEM_ID,
       i.ITEM_NAME,
       i.RARITY
FROM   ITEM_INFO i
       JOIN (SELECT i1.ITEM_ID
             FROM   ITEM_TREE i1
                    LEFT JOIN ITEM_TREE i2
                           ON i1.ITEM_ID = i2.PARENT_ITEM_ID
             WHERE  i2.ITEM_ID IS NULL) a
         ON i.ITEM_ID = a.ITEM_ID
ORDER  BY 1 DESC;

문제 링크
서브쿼리를 여러 번 중첩시키면 해결은 어렵지 않은 문제.
TREE 구조에서 부모와 자식을 구분하는 것이 항상 헷갈린다ㅎㅎ

SELECT i2.item_id,
       i2.item_name,
       i2.rarity
FROM   ITEM_INFO i2
       JOIN (SELECT it.item_id
             FROM   ITEM_TREE it
                    JOIN (SELECT item_id
                          FROM   ITEM_INFO
                          WHERE  rarity = 'RARE') a
                      ON it.parent_item_id = a.item_id) b
         ON i2.item_id = b.item_id
ORDER  BY 1 DESC;
profile
기본기를 소홀히 하지 말자

0개의 댓글

관련 채용 정보