PERCENTILE_CONT در SQL Server 2025: ابزاری قدرتمند برای تحلیل دادهها در T-SQL
تابع PERCENTILE_CONT در SQL Server 2025 یکی از توابع پنجرهای تحلیلی جدید و قدرتمند در T-SQL است که امکان محاسبه دقیق درصدکها را برای توزیعهای پیوسته فراهم میآورد. این تابع به شما کمک میکند تا موقعیت نسبی یک مقدار خاص را در یک مجموعه داده تعیین کرده و بینشهای عمیقی از دادههای خود به دست آورید. با استفاده از PERCENTILE_CONT، میتوانیم به راحتی میانه، کوارتیلها و سایر درصدکها را در SQL Server 2025 محاسبه کنیم که برای تحلیلهای آماری و گزارشگیری بسیار ارزشمند است.
مفهوم PERCENTILE_CONT و کاربرد آن
تابع PERCENTILE_CONT (Percentile Continuous) یک تابع پنجرهای تحلیلی است که یک مقدار درصدکی را برای یک توزیع پیوسته محاسبه میکند. این تابع از یک مدل توزیع خطی برای درونیابی مقادیر استفاده میکند و به همین دلیل میتواند مقداری را برگرداند که لزوماً در مجموعه داده اصلی شما وجود ندارد. این ویژگی آن را برای تحلیلهایی که نیاز به دقت بالا در مقادیر میانی دارند، ایدهآل میسازد. به عنوان مثال، میتوانید درصدک ۵۰ (میانه) یا کوارتیلها (درصدک ۲۵، ۵۰، ۷۵) را به راحتی با این تابع به دست آورید.
سینتکس تابع PERCENTILE_CONT در T-SQL
سینتکس تابع PERCENTILE_CONT کاملاً سرراست است و از پارامترهای زیر تشکیل شده است:
PERCENTILE_CONT (numeric_literal) WITHIN GROUP (ORDER BY expression [ ASC | DESC ]) OVER ( [ <partition_by_clause> ] <order_by_clause> )
در اینجا، numeric_literal عددی بین 0.0 تا 1.0 (شامل) است که درصدک مورد نظر را مشخص میکند (مثلاً 0.5 برای میانه). WITHIN GROUP (ORDER BY expression) ستونی را مشخص میکند که درصدک بر اساس آن محاسبه میشود و میتواند صعودی یا نزولی مرتب شود. عبارت OVER ( [ <partition_by_clause> ] <order_by_clause> ) نیز مانند سایر توابع پنجرهای، نحوه تقسیم دادهها به گروههای فرعی (partition_by_clause) و ترتیببندی در هر گروه (order_by_clause) را تعیین میکند. توجه داشته باشید که order_by_clause درون OVER clause برای توابع PERCENTILE_CONT و PERCENTILE_DISC یک الزام است و با ORDER BY درون WITHIN GROUP متفاوت است.
آمادهسازی دادههای نمونه برای آزمایش PERCENTILE_CONT
برای درک بهتر نحوه کار PERCENTILE_CONT، ابتدا یک جدول نمونه ایجاد کرده و تعدادی داده به آن اضافه میکنیم:
CREATE TABLE dbo.TestTable
(
Id INT PRIMARY KEY IDENTITY(1,1),
Category VARCHAR(50),
Value DECIMAL(10,2)
);
INSERT INTO dbo.TestTable (Category, Value) VALUES
('A', 10.00), ('A', 20.00), ('A', 30.00), ('A', 40.00), ('A', 50.00),
('B', 15.00), ('B', 25.00), ('B', 35.00), ('B', 45.00), ('B', 55.00), ('B', 65.00),
('C', 5.00), ('C', 10.00), ('C', 15.00), ('C', 20.00);
محاسبه میانه (درصدک ۵۰) با PERCENTILE_CONT
با استفاده از دادههای نمونه، میتوانیم میانه (درصدک 0.5) را برای کل مجموعه داده محاسبه کنیم. این کار به ما یک دید کلی از نقطه میانی مقادیر میدهد:
SELECT
Value,
PERCENTILE_CONT (0.5) WITHIN GROUP (ORDER BY Value) OVER () AS MedianValue
FROM
dbo.TestTable;
در این مثال، OVER () نشان میدهد که ما میانه را برای کل مجموعه داده محاسبه میکنیم، بدون تقسیمبندی به گروههای فرعی. تابع به صورت خطی بین مقادیر مرتب شده درونیابی میکند تا میانه را پیدا کند.
استفاده از PARTITION BY برای تحلیل گروهی
اگر بخواهیم میانه را بر اساس یک ستون خاص، مثلاً ‘Category‘، برای هر گروه به صورت جداگانه محاسبه کنیم، میتوانیم از PARTITION BY استفاده کنیم:
SELECT
Category,
Value,
PERCENTILE_CONT (0.5) WITHIN GROUP (ORDER BY Value) OVER (PARTITION BY Category) AS MedianValuePerCategory
FROM
dbo.TestTable
ORDER BY
Category, Value;
این کوئری میانه مقادیر را برای هر Category به طور مستقل محاسبه میکند که برای مقایسه عملکرد یا ویژگیهای مختلف گروهها بسیار مفید است.
محاسبه کوارتیلها (درصدک ۲۵، ۵۰، ۷۵)
PERCENTILE_CONT ابزاری عالی برای محاسبه کوارتیلها است. کوارتیلها دادهها را به چهار بخش مساوی تقسیم میکنند. برای محاسبه کوارتیل اول (Q1 – درصدک 0.25)، کوارتیل دوم (Q2 – میانه – درصدک 0.5) و کوارتیل سوم (Q3 – درصدک 0.75) میتوانیم از این تابع استفاده کنیم:
SELECT
Category,
Value,
PERCENTILE_CONT (0.25) WITHIN GROUP (ORDER BY Value) OVER (PARTITION BY Category) AS Quartile1,
PERCENTILE_CONT (0.5) WITHIN GROUP (ORDER BY Value) OVER (PARTITION BY Category) AS Median,
PERCENTILE_CONT (0.75) WITHIN GROUP (ORDER BY Value) OVER (PARTITION BY Category) AS Quartile3
FROM
dbo.TestTable
ORDER BY
Category, Value;
این خروجی به شما امکان میدهد توزیع دادهها را درون هر دسته مشاهده کرده و نقاط داده مهم مانند میانه و حدود ۲۵ درصد بالایی و پایینی را شناسایی کنید. فرمولهای استفاده شده برای محاسبه کوارتیلها به صورت زیر هستند:
PERCENTILE_CONT (0.25) WITHIN GROUP (ORDER BY Value) OVER (PARTITION BY Category)
PERCENTILE_CONT (0.5) WITHIN GROUP (ORDER BY Value) OVER (PARTITION BY Category)
PERCENTILE_CONT (0.75) WITHIN GROUP (ORDER BY Value) OVER (PARTITION BY Category)
هر یک از این فرمولها، یک نقطه درصدکی خاص را در توزیع پیوسته مقادیر Value برای هر Category محاسبه میکنند.
مقایسه PERCENTILE_CONT با PERCENTILE_DISC
مهم است که تفاوت بین PERCENTILE_CONT و PERCENTILE_DISC را درک کنیم. PERCENTILE_CONT برای توزیعهای پیوسته استفاده میشود و میتواند مقداری را برگرداند که در مجموعه داده اصلی موجود نیست، زیرا مقادیر را درونیابی میکند. در مقابل، PERCENTILE_DISC (Percentile Discrete) برای توزیعهای گسسته استفاده میشود و همیشه یک مقدار موجود در مجموعه داده را برمیگرداند. این تفاوت در نحوه محاسبه و نوع خروجی آنها حیاتی است.
برای مثال، اگر بخواهیم میانه را با هر دو تابع محاسبه کنیم:
SELECT
Value,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY Value) OVER () AS ContinuousMedian,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY Value) OVER () AS DiscreteMedian
FROM
dbo.TestTable
ORDER BY
Value;
این کوئری به وضوح نشان میدهد که چگونه PERCENTILE_CONT ممکن است یک مقدار میانگین را بین دو نقطه داده برگرداند، در حالی که PERCENTILE_DISC یکی از مقادیر واقعی موجود در دادهها را انتخاب میکند.
نتیجهگیری
تابع PERCENTILE_CONT در SQL Server 2025 ابزاری قدرتمند و انعطافپذیر برای تحلیل دقیق دادهها با محاسبه درصدکها در توزیعهای پیوسته است. با توانایی آن در درونیابی مقادیر و کار با پارتیشنها، میتوانید بینشهای عمیقی از الگوها و نقاط داده مهم در مجموعه دادههای خود به دست آورید. این تابع همراه با سایر توابع پنجرهای، تحلیلهای آماری و گزارشگیری پیشرفته را در T-SQL بسیار سادهتر و کارآمدتر میکند.