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이 추출되지 않는다.
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의 재고를 넣는 문제이다. 문제 이해를 하는데 조금 걸렸다.