quantileExactHigh
أُضيف في: v20.8.0
على غرار quantileExact، تحسب هذه الدالة الكمّ الدقيق لتسلسل من البيانات الرقمية.
للحصول على القيمة الدقيقة، تُجمَع جميع القيم المُمرَّرة في مصفوفة، ثم تُرتَّب بالكامل.
يبلغ تعقيد خوارزمية الترتيب O(N·log(N))، حيث N = std::distance(first, last) من المقارنات.
تعتمد القيمة المُعادة على مستوى الكمّ وعدد العناصر في المجموعة، أي إذا كان المستوى 0.5، فستُعيد الدالة قيمة الوسيط الأعلى عند وجود عدد زوجي من العناصر، وقيمة الوسيط الوسطى عند وجود عدد فردي من العناصر.
يُحسَب الوسيط بطريقة مماثلة لتطبيق median_high المستخدم في بايثون.
بالنسبة إلى جميع المستويات الأخرى، يُعاد العنصر عند الفهرس الموافق للقيمة level * size_of_array.
عند استخدام عدة دوال quantile* بمستويات مختلفة في استعلام، لا تُدمَج الحالات الداخلية (أي إن الاستعلام يعمل بكفاءة أقل مما يمكن أن يكون عليه).
في هذه الحالة، استخدم الدالة quantiles.
الصياغة
quantileExactHigh(level)(expr)الأسماء البديلة: medianExactHigh
المعلمات
level— اختياري. مستوى الكمّ. عدد ثابت بفاصلة عائمة من 0 إلى 1. نوصي باستخدام قيمةlevelضمن النطاق[0.01, 0.99]. القيمة الافتراضية: 0.5. عندlevel=0.5تحسب الدالة الوسيط.Float*
الوسيطات
expr— تعبير على قيم العمود ينتج أنواع بيانات رقمية أوDateأوDateTimeأوDateTime64.(U)Int*أوFloat*أوDecimal*أوDateأوDateTimeأوDateTime64
القيمة المُعادة
تعيد الكمّ للمستوى المحدد. بالنسبة إلى أنواع البيانات الرقمية، يطابق تنسيق الإخراج تنسيق الإدخال. (U)Int* أو Float* أو Decimal* أو Date أو DateTime أو DateTime64
أمثلة
حساب الكمّ العالي الدقيق
SELECT quantileExactHigh(number) FROM numbers(10);┌─quantileExactHigh(number)─┐
│ 5 │
└───────────────────────────┘حساب مستوى كمّ محدد
SELECT quantileExactHigh(0.1)(number) FROM numbers(10);┌─quantileExactHigh(0.1)(number)─┐
│ 1 │
└────────────────────────────────┘