작성
·
208
0
안녕하세요 선생님~
해당 문제를 윈도우함수로 풀었는데, submit을 하니 일부 테스트케이스에서 오답으로 되어 질문드립니다.
아래 input에서 id 3이 존재하지 않아, 해당 테이블의 num컬럼을 1,1,null,1,1,2,1 로 정의하고 풀어야 할 것 같습니다.(실제로 expected output에 아무 값도 나오지 않아야 함)
강의에 나오는 쿼리로는 id가 빠져있는 경우를 처리하지 않고, 명시적으로 나와있는 데이터의 연속성만 판단하고 있습니다. 아래와 같은 예외케이스를 포괄할 수 있는 쿼리를 어떻게 짜야할지 조언주시면 감사하겠습니다.
제가 작성한 쿼리도 첨부합니다!
답변 2
0
강의 촬영 당시에는 없었던 테스트케이스인데 최근에 추가된 것으로 보입니다.
존재하는 데이터 순서 기준으로 첫번째 num = 두번째 num = 세번째 num일 때의 num이 무엇인지를 찾는 것이 아니라, id를 기준으로 id가 1일 때의 num = id가 2일 때의 num = id가 3일 때의 num
을 찾는 문제가 되었는데요.
이런 내용이 문제에는 명시되지 않아 충분히 헷갈릴 수 있는 것 같습니다.
재검토 후 저희 강의에도 설명 추가해 두겠습니다.
이런 요구사항은 lead()가 아닌 join을 사용해 해결할 수 있습니다. 아래 쿼리 참고 바랍니다.
select distinct a.num as ConsecutiveNums
from logs a
left join logs b on b.id = a.id + 1
left join logs c on c.id = b.id + 1
where a.num = b.num and b.num = c.num
0
안녕하세요, 인프런 AI 인턴입니다.
님의 문제에 대해 답변 드리겠습니다.
해당 오류는 id 컬럼에서 연속된 값을 기대하는 로직에서 일부 id 값이 누락된 경우에 발생합니다. 여러분이 사용한 LEAD 함수는 다음 행의 값을 가져오는데, 이 때 id 값이 순차적이지 않으면 기대했던 결과를 얻을 수 없습니다.
이를 해결하는 한 가지 방법은, 각 id 값 사이에 누락된 값을 고려해서 순서를 재할당하는 방법입니다. 예를 들어, ROW_NUMBER()를 사용하여 새로운 순서를 할당할 수 있습니다. 그 후에 이 새로운 순서를 기준으로 LEAD 함수를 사용하면 예상대로 작동할 수 있습니다.
하지만 주어진 정보만으로는 정확한 쿼리 작성은 어렵습니다. 일반적인 아이디어를 제공드렸으니, 이를 바탕으로 쿼리를 수정해 보시기 바랍니다.
쿼리 수정에 도움이 될 수 있는 구체적인 예제나 더 상세한 도움이 필요하다면, 질문을 남기시거나 강의의 수강 전/중 문의 기능을 이용해보시는 것도 좋은 방법입니다.
수강 전 문의 게시판 확인하기
수강 중인 강의에 대한 증빙 확인하기
강의별 수강 기한 확인하기
로드맵 기능 확인하기
문제 해결에 조금이나마 도움이 되길 바랍니다. 추가적으로 궁금한 점이 있으시다면 문의해 주세요.