quantileExactWeightedInterpolated
أُضيفت في: v24.10.0
تحسب كمّ لتسلسل من البيانات الرقمية باستخدام الاستيفاء الخطي، مع مراعاة وزن كل عنصر.
للحصول على القيمة المستوفاة، تُجمَع جميع القيم المُمرَّرة في Array، ثم تُرتَّب وفقًا لأوزانها المقابلة. بعد ذلك، يُجرى استيفاء الكمّ باستخدام weighted percentile method من خلال بناء توزيع تراكمي استنادًا إلى الأوزان، ثم يُجرى استيفاء خطي باستخدام الأوزان والقيم لحساب الكمّات.
عند استخدام عدة دوال quantile* بمستويات مختلفة في استعلام، لا تُدمَج الحالات الداخلية (أي إن الاستعلام يعمل بكفاءة أقل مما يمكن أن يكون عليه).
في هذه الحالة، استخدم الدالة quantiles.
نوصي بشدة باستخدام quantileExactWeightedInterpolated بدلًا من quantileInterpolatedWeighted لأن quantileExactWeightedInterpolated أدق من quantileInterpolatedWeighted.
راجع المثال أدناه لمزيد من التفاصيل.
الصياغة
quantileExactWeightedInterpolated(level)(expr, weight)الأسماء المستعارة: medianExactWeightedInterpolated
المعلمات
level— اختياري. مستوى الكمّ. عدد ثابت ذو فاصلة عائمة من 0 إلى 1. نوصي باستخدام قيمةlevelضمن النطاق[0.01, 0.99]. القيمة الافتراضية: 0.5. عندlevel=0.5تحسب الدالة الوسيط.Float*
الوسائط
expr— تعبير على قيم العمود يُنتج أنواع بيانات رقمية أوDateأوDateTimeأوDateTime64.(U)Int*أوInt128أوUInt128أوInt256أوUInt256أوFloat*أوDecimal*أوDateأوDateTimeأوDateTime64weight— عمود يحتوي على أوزان عناصر التسلسل. الوزن هو عدد مرات تكرار القيمة.UInt*
القيمة المعادة
الكمّ عند المستوى المحدد. تُنتج الوسائط الرقمية Float64، بينما تحتفظ وسائط Decimal وDate وDateTime وDateTime64 بتنسيق الإدخال الخاص بها. Float64 أو Decimal* أو Date أو DateTime أو DateTime64
أمثلة
حساب كمّ دقيق موزون مع الاستيفاء
CREATE TABLE t (
n Int32,
val UInt32
) ENGINE = Memory;
INSERT INTO t VALUES (0, 3), (1, 2), (2, 1), (5, 4);
SELECT quantileExactWeightedInterpolated(n, val) FROM t;┌─quantileExactWeightedInterpolated(n, val)─┐
│ 1.5 │
└───────────────────────────────────────────┘يُفضَّل استخدام quantileExactWeightedInterpolated بدلًا من quantileInterpolatedWeighted
SELECT
quantileExactWeightedInterpolated(0.99)(number, 1),
quantile(0.99)(number),
quantileInterpolatedWeighted(0.99)(number, 1)
FROM numbers(9)┌─quantileExactWeightedInterpolated(0.99)(number, 1)─┬─quantile(0.99)(number)─┬─quantileInterpolatedWeighted(0.99)(number, 1)─┐
│ 7.92 │ 7.92 │ 8 │
└────────────────────────────────────────────────────┴────────────────────────┴───────────────────────────────────────────────┘راجع أيضًا