728x90
Strata Scratch SQL 문제 풀이
Find the ratio of successfully received messages to sent messages.
SQL 쿼리 분석
SELECT
COUNT(CASE WHEN receiver IS NOT NULL THEN 1 END) / COUNT(sender) AS ratio
FROM facebook_messages_sent s
LEFT JOIN facebook_messages_received r
ON r.message_id = s.message_id;
1. 데이터 테이블 개요
- facebook_messages_sent: 메시지가 전송된 기록을 저장하는 테이블.
- facebook_messages_received: 메시지가 성공적으로 수신된 기록을 저장하는 테이블.
2. LEFT JOIN 활용
- facebook_messages_sent 테이블을 기준으로 facebook_messages_received 테이블과 message_id를 통해 LEFT JOIN을 수행.
- 이렇게 하면 모든 전송된 메시지가 포함되며, 수신된 메시지가 있는 경우 해당 데이터가 결합됨.
3. COUNT() 함수 활용
- COUNT(CASE WHEN receiver IS NOT NULL THEN 1 END): receiver 값이 NULL이 아닌 경우에만 카운트 → 성공적으로 수신된 메시지 개수.
- COUNT(sender): 모든 전송된 메시지 개수.
- 두 개의 COUNT 값을 나눠서 수신 성공률을 계산.
반응형
'Programming (프로그래밍) > SQL' 카테고리의 다른 글
SQL 윈도우 함수에서 PRECEDING과 CURRENT ROW 이해하기 (0) | 2025.01.28 |
---|