안녕하세요 동영상강의 보다가 궁금한게 있어 문의 드립니다. 순위함수에서 over절에 의한 정렬을 사용하였을 경우 over(order by count(*) desc) as rank 출력되는 행들의 순서에도 영향을 미치는건지 궁금합니다. 예시로보면 over절에 의해 출력되는행들(결과값)이 내림차순으로 정렬된거 같아 헷갈려서 질문드립니다. SELECT MPG, COUNT(*), ROW_NUMBER() OVER(ORDER BY COUNT(*) DESC) AS RANK FROM MTCARS GROUP BY MPG ORDER BY COUNT(*) DESC , MPG ASC;
안녕하세요, 아이리포입니다. 저자님 답변 공유 드립니다! OVER절 내의 ORDER BY도 출력되는 결과에 영향을 미칩니다. 실제로 정렬을 수행한 후에 ROW_NUMBER()함수를 적용하기 때문이죠. 하지만 이것은 윈도우 함수를 실행하기 위해 수행한 연산의 결과일 뿐이며 최종 결과의 정렬 상태를 보장하지는 않습니다. 만약 최종 결과를 의도한대로 정렬하고 싶다면 바깥에 별도의 ORDER BY절을 사용해야 합니다. 책의 222페이지 실행결과를 보시면 COUNT(*)에 대해서는 내림차순 정렬이 되어 있지만 MPG에 대해서는 정렬이 되어 있지 않습니다. 말씀하신 쿼리를 실행시키시면 MPG에 대해서도 오름차순 정렬이 됩니다.
안녕하세요 동영상강의 보다가 궁금한게 있어 문의 드립니다.
순위함수에서 over절에 의한 정렬을 사용하였을 경우 over(order by count(*) desc) as rank
출력되는 행들의 순서에도 영향을 미치는건지 궁금합니다.
예시로보면 over절에 의해 출력되는행들(결과값)이 내림차순으로 정렬된거 같아 헷갈려서 질문드립니다.
SELECT MPG, COUNT(*), ROW_NUMBER() OVER(ORDER BY COUNT(*) DESC) AS RANK
FROM MTCARS
GROUP BY MPG
ORDER BY COUNT(*) DESC , MPG ASC;
안녕하세요, 아이리포입니다. 저자님 답변 공유 드립니다!
OVER절 내의 ORDER BY도 출력되는 결과에 영향을 미칩니다. 실제로 정렬을 수행한 후에 ROW_NUMBER()함수를 적용하기 때문이죠. 하지만 이것은 윈도우 함수를 실행하기 위해 수행한 연산의 결과일 뿐이며 최종 결과의 정렬 상태를 보장하지는 않습니다. 만약 최종 결과를 의도한대로 정렬하고 싶다면 바깥에 별도의 ORDER BY절을 사용해야 합니다. 책의 222페이지 실행결과를 보시면 COUNT(*)에 대해서는 내림차순 정렬이 되어 있지만 MPG에 대해서는 정렬이 되어 있지 않습니다. 말씀하신 쿼리를 실행시키시면 MPG에 대해서도 오름차순 정렬이 됩니다.
20240808 수강완료