inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

SQL 코딩테스트를 위한 마지막 걸음

LAG, LEAD 강의 550. Game Play Analysis IV 관련 질문

해결된 질문

164

김주아

작성한 질문수 1

1

https://leetcode.com/problems/game-play-analysis-iv/ 

 

안녕하세요. 강의를 수강하고 있는 학생입니다.

해당 문제를 1번 쿼리처럼 풀면 각각 1/3이 나타나는 것을 확인했습니다.

하지만 2번 쿼리처럼 비율을 구하기위해 각각을 나누기하면 완전히 다른 값이 나타나는데 왜 그런것인지 질문드립니다.

-- 1번 쿼리
SELECT COUNT(DISTINCT CASE WHEN A.info= A.pre_date THEN A.player_id END)
    , COUNT(DISTINCT A.player_id)
FROM (
    SELECT *
        , LAG(event_date) OVER (PARTITION BY player_id ORDER BY event_date) AS info
        , DATE_SUB(event_date, INTERVAL 1 day) AS pre_date
    FROM Activity
    ) AS A

-- 2번 쿼리
SELECT ROUND(COUNT(DISTINCT CASE WHEN A.info= A.pre_date THEN A.player_id END)/COUNT(DISTINCT A.player_id),2) AS fraction
FROM (
    SELECT *
        , LAG(event_date) OVER (PARTITION BY player_id ORDER BY event_date) AS info
        , DATE_SUB(event_date, INTERVAL 1 day) AS pre_date
    FROM Activity
    ) AS A

sql mysql 코딩-테스트

답변 2

0

Gemma

주아님 안녕하세요:)

제가 직접 추가한 데이터 기준이 아닌, leetcode로 주아님의 상황을 재현해보았습니다.

 

1번 쿼리로 leetcode에서 Submit 하면, 애초에 분수가 아닌 2개 컬럼의 쿼리이기 때문에

Test case 0번째에서 fail이 납니다.

스크린샷 2024-09-18 오전 8.02.45.png

 

2번 쿼리로 leetcode에서 Submit 하면, 분수의 형태이기 때문에 초반 몇 개의 test case에서는 통과합니다. 하지만 결국에는 Test case 6번째에서 fail이 납니다.

스크린샷 2024-09-18 오전 8.03.57.png

 

테스트 케이스의 데이터가 다르기 때문에 숫자가 다르게 나타났던 것입니다.

혹시 이해가 안가는 부분이 있다면, 편하게 다시 질문 부탁드립니다:)

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

김주아 님의 질문에 대해 자세히 답변드리겠습니다. 질문 내용은 쿼리의 논리적 차이로 인해 두 가지 쿼리의 결과가 다른 이유를 설명하는 것입니다. 두 쿼리의 비율이 다른 값으로 나타나는 이유는 쿼리 내 COUNT와 조건문의 사용 방식으로 인해 결과가 달라질 수 있기 때문입니다.

쿼리 1의 역할:
1. COUNT(DISTINCT CASE WHEN A.info = A.pre_date THEN A.player_id END) 은 조건을 만족하는 player_id를 기준으로 고유한 수를 셉니다.
2. COUNT(DISTINCT A.player_id)는 모든 고유한 player_id를 셉니다.

쿼리 2의 역할:
1. 쿼리 1의 각 결과를 ROUND() 함수를 통해 비율 계산하도록 합니다.
2. 최종적으로 CASE 문에 걸리는 값들의 비율을 구합니다.

주아 님의 경우, 각 쿼리가 각자의 역할을 다하고 있지만, CASE WHEN으로 사용된 조건 및 계산 방식이 차이의 원인으로 보입니다.

기존 답변의 참고 URL

이해를 돕기위한 유사한 상황을 다루고 있는 기존 답변들을 아래에 첨부해드리겠습니다. 여기엔 보다 자세한 설명과 여러 유사한 문제에 대한 해결 방안을 다루고 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

백준 사이트 서버종료

0

2

0

살구 클럽에 대한 질문있습ㄴ디ㅏ

0

16

1

[할인쿠폰] 코테의 바이블[JAVA] 50% 할인 쿠폰 관련

0

7

1

GROUP BY 시 인덱스를 타지 않는 이유가 궁금합니다

0

13

1

FOREIGN KEY 정리하기, 영상대로 SQL코드 복붙해도 안되요.

0

18

1

모델 서빙과 관련된 강좌 출시 예정된 바가 있으신지 여쭤봅니다!

0

21

2

Vercel 실행이 안됩니다

0

16

1

교안 158페이지 문의드립니다

0

28

2

코딩살구클럽 관련 건의사항

0

63

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

29

1

수강평 이벤트

0

24

2

패키지 구분에 대해 궁금한게 있습니다

0

18

2

진행 방법 질문드립니다!

0

60

2

노션 링크도 안 열리고, 알려준 vercel도 실행이 안됩니다.

0

21

1

안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.

0

19

1

스프링부트 서버 에러나요

0

20

1

코드를 첨부해야하는 이유가 있나요?

0

23

2

갑자기 채점 사이트가 바뀌었어요

0

24

1

간단한 오타 제보입니다.

0

21

1

문제 리스트 페이지

0

24

1

part8 Notion 링크

0

25

1

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

39

2

Date 강의 / leetcode 1321 질문

1

197

1

lag, leag 강의에서 game-play-analysis-iv 문제

1

406

2