본문 바로가기
카테고리 없음

PCSQL 모의고사 4번 샘플 문제

by 리토스송 2024. 8. 3.
WITH rk as(SELECT user_id,s.problem_id,s.submitted,p.correct_answer,
       ROW_NUMBER() over(partition by user_id,problem_id order by timestamp) NTH_SUBMISSION
FROM submissions as s
INNER JOIN problems as p on s.problem_id=p.problem_id
),ps_cnt AS( 
    SELECT NTH_SUBMISSION,
           ROUND(COUNT(CASE WHEN submitted=correct_answer THEN 1 END)/COUNT(NTH_SUBMISSION)*100) as CORRECT_RATE
    FROM rk
    GROUP BY NTH_SUBMISSION
)

SELECT *
FROM ps_cnt

완벽하다고 생각하진 않지만 챗 GPT 선생님과 함께 꼬박 하루 걸려서 푼 문제... 이런 걸 1시간 반 안에 5문제를 어떻게 풀지..? (해야지 뭐..)

풀이 방법

1. 윈도우 함수 활용해서 제출 순서를 분류하는게 우선이였다고 생각했음

2.  제출순서별 정답률을 구하기 위해  group by를 써줘야 되기 때문에 가상 테이블을 1개 더 생성함

3. count(NTH_SUBMISSION) - 사용자의 제출순서별(1,2,3..) 제출 횟수 중 정답인거 고르면 정답률 나옴

 

 다른 사람 답안 참고 안하고 푼 거여서 의미있다고 생각함

피드백

코딩테스트 준비 위해 문제보고 이해하며 시간 줄이는 방법 찾아야 함.(조언 환영 ㅎㅎ.!)

(쿼리의 오류나 더 좋은 쿼리 있으면 피드백 환영합니다!!)