[코딩테스트]/[SQL]

[StrataScratch - SQL] (Medium) Clicked Vs Non-Clicked Search Results

잰잰' 2025. 5. 9. 12:06

문제

검색 결과를 기반으로 두 개의 비율을 계산하세요. 먼저, 클릭된 기록들(clicked = 1) 중 상위 3위 안에 있는 비율을 구하세요. 두 번째로, 클릭되지 않은 기록들(clicked = 0) 중 상위 3위 안에 있는 비율을 구하세요. 두 비율 모두 전체 검색 기록 수를 기준으로 계산되어야 하며, 동일한 행에 두 개의 열로 출력되어야 합니다.

 

테이블설명

 

예상결과

 

✏️ 풀이

WITH clicked_cnt AS (
    SELECT COUNT(*) AS c_cnt
    FROM fb_search_events
    WHERE clicked = 1 AND search_results_position <= 3
), unClicked_cnt AS (
    SELECT COUNT(*) AS uc_cnt
    FROM fb_search_events
    WHERE clicked = 0 AND search_results_position <= 3
)

SELECT c_cnt / COUNT(*) * 100 AS top_3_clicked,
    uc_cnt / COUNT(*) * 100 AS top_3_notclicked
FROM fb_search_events
JOIN clicked_cnt
JOIN unClicked_cnt;

1. clicked = 1 의 top3 count

2. clicked = 0 의 top3 count

3. 전체 1, 2번을 전체 카운트와 나눠 100을 곱해 비율 구하기