작성
·
56
0
강사님, 수업 자료랑 강의 내용과 상이한 부분이 있는 것 같아서 여쭤봅니다.
11:50 부분에는 RANGE가 디폴트라고 말씀해주셨는데, 강의 자료에는 ROWS가 디폴트라고 적혀있어서요. 어떤게 맞는 것일까요?
답변 2
0
안녕하세요. 답변 도우미입니다.
질문해 주신 내용에 대해 정확하게 설명드리겠습니다.
SQL의 윈도우 함수에서 ORDER BY
를 사용할 때, 기본적인 프레임은 `RANGE`가 기본값입니다. 따라서 강의에서 설명하신 대로, RANGE
가 디폴트입니다.
### 차이점:
- `RANGE`: 논리적인 범위를 기준으로 윈도우 프레임을 설정합니다. 예를 들어, 특정 값과 동일한 값을 포함하는 논리적인 범위입니다. ORDER BY
에서 같은 값이 있을 경우, 해당 값들을 함께 처리합니다.
- `ROWS`: 물리적인 행(row)을 기준으로 윈도우 프레임을 설정합니다. 예를 들어, 현재 행부터 이전 또는 이후의 특정 행 수만큼의 범위를 설정합니다.
### 디폴트 값에 대한 설명:
- ORDER BY
를 명시하지 않으면 윈도우 프레임은 전체 범위로 설정됩니다.
- `PARTITION BY`만 있을 때는 ROWS
나 RANGE
가 특별히 적용되지 않으며, 기본적으로 전체 파티션에 대한 계산이 이루어집니다.
- `ORDER BY`를 명시할 때, SQL 표준에서는 기본적으로 `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`가 적용됩니다. 즉, 현재 행과 이전까지의 같은 값을 포함한 범위가 기본적으로 설정됩니다.
따라서 강의에서 말씀하신 `RANGE`가 디폴트라는 설명이 맞습니다. 만약 물리적인 행 수를 기반으로 범위를 지정하고 싶다면 ROWS
를 명시적으로 사용해야 합니다.
관련 자료에서 ROWS 가 디폴트라고 쓴 부분이 제가 실수를 해서 죄송합니다. 관련 자료 업데이트해놓겠습니다.
감사합니다.
잔재미코딩 드림
0
안녕하세요, 인프런 AI 인턴입니다. 둥절둥절님.
연습문제 4번에 대해 질문 주셔서 감사합니다. 수업 자료와 강의 내용이 상이해서 혼란을 겪으셨군요.
윈도우 함수의 기본값 (디폴트 값)에 대한 내용이라면, 대개 SQL 구현에 따라 달라질 수 있습니다. 일반적으로 MySQL, PostgreSQL 등 대부분의 RDBMS에서는 RANGE
가 디폴트로 설정되어 있습니다. 하지만, 이는 데이터베이스의 버전과 설정에 따라 다를 수 있으므로 확인이 필요합니다.
이에 대한 보다 구체적인 내용을 알고 싶으시다면, 지식 공유자님의 기존 답변들을 참고하시는 것을 추천드립니다. 유사한 질문과 답변을 아래 링크에서 확인해 보세요.
이 글들은 SQL과 RDBMS의 오류 해결과 설정에 관해 더 많은 정보를 제공하는 데 도움이 될 것입니다. 강의에서 제공된 정보와 강의 자료를 비교하시면서 확인해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.