inflearn logo
강의

Course

Instructor

The final step for SQL coding test

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

Resolved

176

ss606444110

1 asked

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 코딩-테스트

Answer 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

communityai8509

안녕하세요, 인프런 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

3

1

코딩살구클럽 승인

0

2

1

코딩살구클럽승인

0

7

1

vercel실행 - failed to fetch

0

11

1

드랍 테이블로 지운 ordes에 대해서 질문

0

22

1

코딩살구클럽 승인

0

36

2

문제 풀이 1번 질문

0

28

1

3-D 관련 질문

0

31

2

코살구 회원가입 문의

0

38

2

twitterdb 연결이 안돼요

1

27

2

강의노트 접속 불가

0

28

2

Kafka Cluster 구성도 질문

0

23

1

코살구 로그인 문제

0

57

2

아주 작은 정오표 전달드립니다.

0

52

2

mysql워크벤치를 실행할때마다 오류가 뜹니다. 해결 방법좀 가르켜주세요.

0

44

1

3-A 문제 풀이 관련 질문

0

51

3

2-O 질문 있습니다

0

37

2

실제로 작은 기업에서 기획 롤

1

26

1

함수기반 인덱스

0

29

2

날짜 인덱스관련 질문

0

26

1

복합인덱스 확인법

0

23

0

리뷰를 가장 많이 작성한 회원들 조회

0

44

2

Date 강의 / leetcode 1321 질문

1

208

1

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

1

418

2