Algorithm(코딩테스트)/DB(MySQL)3 [SQL] 재귀 쿼리 (WITH RECURSIVE) 이해하기 SQL 계의 반복문 WITH RECURSIVE란?재귀적(반복적)으로 어떤 쿼리를 실행하기 위해 만든 임시 테이블이다.with RECURSIVE hour_tbl as( SELECT 0 as HOUR -- 초기 구문 UNION ALL -- 반복해서 실행할 구문 SELECT HOUR+1 FROM hour_tbl WHERE HOUR 문법 형태는 위와 같다.SELECT 0 as HOUR 구문을 초기 구문으로 하고 UNION ALL 이후 구문을 반복해서 실행할 구문으로 두면 된다. 실행하면 아래와 같다. 이 구문의 원리를 쉽게 이해해보자.SELECT 0 as HOUR 는 마치 int HOUR = 0; 과 같은 초기 선언과 같다.UNION ALL 구문은 두 SQL문의 결과를 합치는 것이다.S.. 2025. 3. 20. PCSQL 모의고사 5번 문제 풀이 사용 개념윈도우 함수누적 합계 sum()임시 테이블을 만들어 결합(JOIN)하는 테크닉복잡한 CTE 설계엣지 테스트 케이스 설계문제 접근 및 정답걸린 시간의 조건이 더 복잡하기 때문에 걸린 시간을 중점적으로 해결하려고 했음. 해당 문제가 정답인지 체크 -> 이전에 정답이었는지 누적합 방식 사용 -> 패널티 시간 계산한 번도 맞춘적이 없는 문제에 대해서는 연산을 하지 않아야 하므로 맞춘 적이 있는 문제만 가져와서 패널티 시간과 점수를 연산한다.-- SELECT * FROM submissions -- 유저의 제출 정보-- SELECT * FROM problems -- 정답/점수-- 과거에 정답이었는지 체크 , 이전에 맞춘 적이 있는지 체크with is_prev_tbl as( SELECT s.user_i.. 2025. 3. 17. [SQL] 연승 구하는 SQL 문제리그오브레전드 게임을 하던 현석이는 전적검색 데이터에서 날짜에 따른 승패 정보를 조회하였다. [테이블1]DATERESULT2022-03-24WIN2022-03-25WIN2022-03-27LOSE2022-03-29WIN2022-04-02WIN2022-04-07WIN 연속해서 이기는("WIN") 것을 연승이라고 할 때 현석이가 여태까지 리그오브레전드 게임을 하면서 연승이 깨지지 않고 최대로 몇 번 연승을 하는지 출력하시오.단, "2022-03-29" 와 "2022-04-02" 와 같이 날이 떨어져 있는 경우에도 연속해서 이겼다면 연승으로 간주합니다. 2022-03-29, 2022-04-02, 2022-04-07 에 연속해서 "WIN" 한 횟수가 3회 이므로 아래와 같이 출력이 되어야 합니다.WIN_CNT.. 2025. 3. 15. 이전 1 다음