TIL - 250417_(SQL_datalemur_2개)

오정수·2025년 4월 17일

TIL

목록 보기
62/78

문제1 (링크)

WITH a AS (
  SELECT * FROM queries 
  WHERE EXTRACT(YEAR FROM query_starttime) = 2023
  AND EXTRACT(MONTH FROM query_starttime) in (7,8,9)
) 
, b AS (
  SELECT 
    employee_id
    , COUNT(DISTINCT query_id) cnt
  FROM a
  RIGHT JOIN employees
  USING (employee_id)
  GROUP BY 1
  )
  
SELECT
  cnt unique_queries
  , COUNT(employee_id) employee_count
FROM b 
GROUP BY 1
ORDER BY 1

비고 : CTE를 활용해서 우선 3분기 필터를 걸어준다. 한 번에 필터를 걸었더니 0이 추출되지 않는다.

문제2 (링크)

WITH a AS (
  SELECT
    SUM(CASE WHEN item_type = 'prime_eligible' THEN 1 ELSE 0 END) prime
    , SUM(CASE WHEN item_type = 'not_prime' THEN 1 ELSE 0 END) n_prime
    , SUM(CASE WHEN item_type = 'prime_eligible' THEN square_footage ELSE 0 END) p_sum
    , SUM(CASE WHEN item_type = 'not_prime' THEN square_footage ELSE 0 END) np_sum
  FROM inventory
)
SELECT
  'prime_eligible' item_type
  , TRUNC(500000 / p_sum) * prime item_count
FROM a
UNION ALL
SELECT
  'not_prime' item_type
  , TRUNC((500000 - (TRUNC(500000 / p_sum)*p_sum))/np_sum) * n_prime item_count
FROM a

비고 : prime 재고부터 다 채우고 남은 것에 not prime의 재고를 넣는 문제이다. 문제 이해를 하는데 조금 걸렸다.

profile
안녕하세요 오정수입니다

0개의 댓글