inflearn logo
강의

Course

Instructor

The final step for SQL coding test

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

Resolved

164

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

15

2

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

0

7

1

진행 방법 질문드립니다!

0

26

2

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

0

10

1

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

0

19

1

스프링부트 서버 에러나요

0

17

1

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

0

20

2

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

0

19

1

간단한 오타 제보입니다.

0

19

1

문제 리스트 페이지

0

22

1

part8 Notion 링크

0

22

1

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

0

34

2

채점 사이트 관련 질문드립니다

0

20

1

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

54

2

실제 FK제약조건을 설정하지 않는이유

0

35

2

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

28

2

Free Edition 실습 영상은 아직 업데이트전인가요?

0

22

1

2주차 개념#12 트리 순회

0

25

2

백준 사이트 서비스 종료

0

111

3

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

36

2

잠겨버린 사물함 시간초과 관련 질문입니다.

0

25

1

상품 정보 크롤링

0

29

2

Date 강의 / leetcode 1321 질문

1

195

1

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

1

405

2