강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của doong
doong

câu hỏi đã được viết

Giải 101 bài tập SQL trung cao cấp và phân tích dữ liệu thực chiến

Hàm cửa sổ SQL nâng cao 2 (Thực hành)

연습문제 4번 관련

Viết

·

138

1

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

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

sqlmysqldbms/rdbms

Câu trả lời 2

0

funcoding님의 프로필 이미지
funcoding
Người chia sẻ kiến thức

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

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

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의 오류 해결과 설정에 관해 더 많은 정보를 제공하는 데 도움이 될 것입니다. 강의에서 제공된 정보와 강의 자료를 비교하시면서 확인해 보세요.

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

Hình ảnh hồ sơ của doong
doong

câu hỏi đã được viết

Đặt câu hỏi