inflearn logo
강의

Course

Instructor

The final step for SQL coding test

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

Resolved

165

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

5

1

회사 내 AI 툴 사용에 대한 질문

0

15

1

일대일 fk 위치

0

21

1

GROUP BY, HAVING 실습 1번문제

1

19

2

4 - A

0

24

2

코딩 테스트 All-in-One(Java)' 강의 노션 교재 권한문의

0

19

1

수업에서 사용하는 툴 질문드려요

0

28

2

태어난김에 세계일주 시간 초과

0

19

1

2강에 파일 어디있을까여,,

0

20

2

커리큘럼 중 정렬 관련 질문

0

18

1

다음 강의는 언제쯤 나올까요?

0

28

2

코딩살구클럽 입장이 안됩니다

0

61

2

땃지님 실습소 DB서버 확인 부탁드립니다

0

25

2

코테 사이트 로그인 불가

0

25

1

마인드맵 사용 프로그램

0

20

1

엔터티 종류

0

23

2

제 3 정규형 vs BCNF 정규형 차이점?

0

35

3

XAMPP에서 Apache, DB 재기동 시 접속안되는 문제

0

17

1

4-F 경우의 수 질문입니다.

0

32

2

DESC, ASC

0

29

2

코딩살구클럽 가입이 안됩니다.

0

75

2

실습 권한이 없네요··· 이건 ··· 좀··· 401 에러떠요

0

29

3

Date 강의 / leetcode 1321 질문

1

198

1

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

1

408

2