인프런 커뮤니티 질문&답변

둥절둥절님의 프로필 이미지
둥절둥절

작성한 질문수

중고급 SQL과 실전 데이터 분석 101 문제 풀이 [데이터분석/과학 Part1]

문제 풀며 익히는 고급 SQL 윈도우 함수2

연습문제 4번 관련

작성

·

56

0

강사님, 수업 자료랑 강의 내용과 상이한 부분이 있는 것 같아서 여쭤봅니다.

11:50 부분에는 RANGE가 디폴트라고 말씀해주셨는데, 강의 자료에는 ROWS가 디폴트라고 적혀있어서요. 어떤게 맞는 것일까요?

답변 2

0

안녕하세요. 답변 도우미입니다.

질문해 주신 내용에 대해 정확하게 설명드리겠습니다.

SQL의 윈도우 함수에서 ORDER BY를 사용할 때, 기본적인 프레임은 `RANGE`가 기본값입니다. 따라서 강의에서 설명하신 대로, RANGE가 디폴트입니다.

### 차이점:

- `RANGE`: 논리적인 범위를 기준으로 윈도우 프레임을 설정합니다. 예를 들어, 특정 값과 동일한 값을 포함하는 논리적인 범위입니다. ORDER BY에서 같은 값이 있을 경우, 해당 값들을 함께 처리합니다.

- `ROWS`: 물리적인 행(row)을 기준으로 윈도우 프레임을 설정합니다. 예를 들어, 현재 행부터 이전 또는 이후의 특정 행 수만큼의 범위를 설정합니다.

### 디폴트 값에 대한 설명:

- ORDER BY를 명시하지 않으면 윈도우 프레임은 전체 범위로 설정됩니다.

- `PARTITION BY`만 있을 때ROWSRANGE가 특별히 적용되지 않으며, 기본적으로 전체 파티션에 대한 계산이 이루어집니다.

- `ORDER BY`를 명시할 때, SQL 표준에서는 기본적으로 `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`가 적용됩니다. 즉, 현재 행과 이전까지의 같은 값을 포함한 범위가 기본적으로 설정됩니다.

따라서 강의에서 말씀하신 `RANGE`가 디폴트라는 설명이 맞습니다. 만약 물리적인 행 수를 기반으로 범위를 지정하고 싶다면 ROWS를 명시적으로 사용해야 합니다.

 

관련 자료에서 ROWS 가 디폴트라고 쓴 부분이 제가 실수를 해서 죄송합니다. 관련 자료 업데이트해놓겠습니다.

감사합니다.

잔재미코딩 드림

0

안녕하세요, 인프런 AI 인턴입니다. 둥절둥절님.

연습문제 4번에 대해 질문 주셔서 감사합니다. 수업 자료와 강의 내용이 상이해서 혼란을 겪으셨군요.

윈도우 함수의 기본값 (디폴트 값)에 대한 내용이라면, 대개 SQL 구현에 따라 달라질 수 있습니다. 일반적으로 MySQL, PostgreSQL 등 대부분의 RDBMS에서는 RANGE가 디폴트로 설정되어 있습니다. 하지만, 이는 데이터베이스의 버전과 설정에 따라 다를 수 있으므로 확인이 필요합니다.

이에 대한 보다 구체적인 내용을 알고 싶으시다면, 지식 공유자님의 기존 답변들을 참고하시는 것을 추천드립니다. 유사한 질문과 답변을 아래 링크에서 확인해 보세요.

이 글들은 SQL과 RDBMS의 오류 해결과 설정에 관해 더 많은 정보를 제공하는 데 도움이 될 것입니다. 강의에서 제공된 정보와 강의 자료를 비교하시면서 확인해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

둥절둥절님의 프로필 이미지
둥절둥절

작성한 질문수

질문하기