본문 바로가기
Programming (프로그래밍)/SQL

[SQL 공부] Strata Q9777M

by 김조이1 2025. 2. 18.
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 값을 나눠서 수신 성공률을 계산.

 

출처: https://www.stratascratch.com/

반응형