التجميع باستخدام NTILE وCume_Dist
قسّم الصفوف إلى مجموعات متساوية الحجم عددها N باستخدام NTILE، واحسب التوزيع التراكمي باستخدام CUME_DIST وPERCENT_RANK
التجميع باستخدام NTILE وCume_Dist درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
NTILE: مجموعات متساوية الحجم
تقسم NTILE(n) الصفوف المرتبة إلى n من المجموعات المتقاربة في الحجم:
SELECT id, total,
NTILE(4) OVER (ORDER BY total) AS quartile
FROM orders;
-- 1 = bottom 25%, 2 = next, 3, 4 = top 25%مجموعات النسب المئوية
استخدم NTILE(10) للعشريات وNTILE(100) للنسب المئوية:
SELECT id, score,
NTILE(100) OVER (ORDER BY score DESC) AS percentile
FROM students;
-- percentile 1 = top 1%PERCENT_RANK
الترتيب النسبي كعدد عشري في النطاق [0, 1]:
SELECT id, score,
PERCENT_RANK() OVER (ORDER BY score) AS pct_rank
FROM students;
-- 0 for the lowest, 1 for the highest.CUME_DIST
نسبة الصفوف التي تكون قيمتها أقل من أو تساوي قيمة الصف الحالي:
SELECT id, score,
CUME_DIST() OVER (ORDER BY score) AS cume_dist
FROM students;
-- "What share of students scored ≤ this one?"إحصاءات النسب المئوية باستخدام PERCENTILE_CONT
احسب القيمة عند نسبة مئوية معينة باستخدام الاستيفاء المستمر:
SELECT
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) AS median,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY total) AS p95,
PERCENTILE_CONT(0.99) WITHIN GROUP (ORDER BY total) AS p99
FROM orders;PERCENTILE_DISC
تشبه PERCENTILE_CONT، لكنها تعيد قيمة موجودة فعلًا بدلًا من قيمة مستوفاة:
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY total)NTILE على التقسيمات
أنشئ مجموعة لكل مستخدم أو فئة أو غير ذلك:
SELECT user_id, total,
NTILE(4) OVER (PARTITION BY user_id ORDER BY total) AS user_quartile
FROM orders;مخطط تكراري باستخدام NTILE
أنشئ فئات المخطط التكراري:
SELECT bucket, MIN(total) AS bucket_min, MAX(total) AS bucket_max, COUNT(*)
FROM (
SELECT NTILE(10) OVER (ORDER BY total) AS bucket, total
FROM orders
) sub
GROUP BY bucket
ORDER BY bucket;التجميع لكل مجموعة
بعد إنشاء المجموعات، احسب الإحصاءات لكل مجموعة:
SELECT user_quartile, COUNT(*) AS users, AVG(total) AS avg_total
FROM (
SELECT user_id, NTILE(4) OVER (ORDER BY total) AS user_quartile, total
FROM orders
) sub
GROUP BY user_quartile;دمج دوال النافذة
اخلط بينها في استعلام واحد لإنشاء تقرير غني:
SELECT id, total,
NTILE(4) OVER w AS quartile,
PERCENT_RANK() OVER w AS pct_rank,
AVG(total) OVER w AS overall_avg
FROM orders
WINDOW w AS (ORDER BY total);متى يكون NTILE مضللًا؟
قد تؤدي القيم المتساوية في ORDER BY إلى إنشاء مجموعات غير متساوية الحجم، لأن NTILE لا يراعي القيم المتساوية. استخدم عمودًا لكسر التعادل.
خلاصة
يغطي NTILE وPERCENT_RANK وCUME_DIST تحليل التوزيع.
- NTILE لإنشاء مجموعات الكميات
- PERCENTILE_CONT وPERCENTILE_DISC لإحصاءات p50 وp95 وp99
- اجمعها مع PARTITION BY لإجراء التحليل لكل مجموعة
تحقق سريع
تحتاج إلى زمن الاستجابة عند p95 من عمود يحتوي على أزمنة الاستجابة. ما الدالة التي تستخدمها؟
الأسئلة الشائعة
هل درس «التجميع باستخدام NTILE وCume_Dist» مجاني؟
نعم — نص درس «التجميع باستخدام NTILE وCume_Dist» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «التجميع باستخدام NTILE وCume_Dist»؟
قسّم الصفوف إلى مجموعات متساوية الحجم عددها N باستخدام NTILE، واحسب التوزيع التراكمي باستخدام CUME_DIST وPERCENT_RANK تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «التجميع باستخدام NTILE وCume_Dist»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عبارات الإطار: ROWS مقابل RANGE
- Lag/Lead مع نوافذ الإطار
- التجميع باستخدام NTILE وCume_Dist
- أنماط إعداد التقارير الواقعية