Sokan Academy

تالار گفت‌وگوی آموزش Window Function ها در SQL


5 گفت‌و‌گو
کاربر میهمان

شما به عنوان کاربر میهمان در سایت سکان آکادمی حضور دارید لطفاً برای ارسال دیدگاه ابتدا وارد حساب خود شوید.

سلام وقت بخیر. آیا RANGE فقط در MYSQL اجازه استفاده از BETWEEN N PRECEDING AND N FOLLOWING را میدهد ؟؟ چون در SQL Server این خطا رو میده ! .RANGE is only supported with UNBOUNDED and CURRENT ROW window frame delimiters

سلام وقت بخیر. آیا RANGE فقط در MYSQL اجازه استفاده از BETWEEN N PRECEDING AND N FOLLOWING را میدهد ؟؟ چون در SQL Server این خطا رو میده ! .RANGE is only supported with UNBOUNDED and CURRENT ROW window frame delimiters

سلام، وقت شما هم بخیر. بله، RANGE BETWEEN N PRECEDING AND N FOLLOWING در همه دیتابیس‌ها پشتیبانی نمی‌شه. در SQL Server، عبارت RANGE با مقادیر عددی برای PRECEDING و FOLLOWING پشتیبانی نمی‌شه و به همین دلیل مثال بالا در SQL Server اجرا نمی‌شه. این موضوع در مستندات رسمی Microsoft هم ذکر شده. https://learn.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver17 این مثال بر اساس SQL Dialectهایی نوشته شده که RANGE با offset عددی رو پشتیبانی می‌کنن، مثل MySQL. اگر هدف SQL Server باشه، برای «تعداد ردیف‌های قبل و بعد» باید از ROWS استفاده کرد؛ اما اگر منظور «محدوده مقداری ±۵» باشه، ROWS معادل نیست و باید با روش‌هایی مثل JOIN یا APPLY پیاده‌سازی بشه.

سلام، وقت شما هم بخیر. بله، RANGE BETWEEN N PRECEDING AND N FOLLOWING در همه دیتابیس‌ها پشتیبانی نمی‌شه. در SQL Server، عبارت RANGE با مقادیر عددی برای PRECEDING و FOLLOWING پشتیبانی نمی‌شه و به همین دلیل مثال بالا در SQL Server اجرا نمی‌شه. این موضوع در مستندات رسمی Microsoft هم ذکر شده. https://learn.microsoft.com/en-us/sql/t-sql/queries/select-over-clause-transact-sql?view=sql-server-ver17 این مثال بر اساس SQL Dialectهایی نوشته شده که RANGE با offset عددی رو پشتیبانی می‌کنن، مثل MySQL. اگر هدف SQL Server باشه، برای «تعداد ردیف‌های قبل و بعد» باید از ROWS استفاده کرد؛ اما اگر منظور «محدوده مقداری ±۵» باشه، ROWS معادل نیست و باید با روش‌هایی مثل JOIN یا APPLY پیاده‌سازی بشه.

مرسی از راهنمایی تون لطف کردین.

مرسی از راهنمایی تون لطف کردین.

خواهش میکنم

در واقع partition by رو میشه یه چیزی شبیه به group by اما برای window function ها در نظر گرفت.

sokan-academy-footer-logo
کلیه حقوق مادی و معنوی این وب‌سایت متعلق به سکان آکادمی می باشد.