PERCENTILE_CONT در SQL Server 2025 تحلیل داده با TSQL

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 بسیار ساده‌تر و کارآمدتر می‌کند.

 

 

من علی دستجردی‌ام؛ عاشق کار با دیتا، از SQL Server تا بیگ‌دیتا و هوش مصنوعی. دغدغه‌ام کشف ارزش داده‌ها و به‌اشتراک‌گذاری تجربه‌هاست. ✦ رزومه من: alidastjerdi.com ✦

عضویت
منو باخبر کن!!!
guest
نام
ایمیل

0 دیدگاه
Inline Feedbacks
دیدن تمامی کامنتها

فوتر سایت

ورود به سایت

sqlyar

هنوز عضو نیستید؟

ورود به سایت

هنوز تبت نام نکردید ؟