ceil
أُضيف في: v1.1.0
مثل floor، لكنه يعيد أصغر عدد مُقرَّب أكبر من أو يساوي x.
إذا أدّى التقريب إلى تجاوز السعة (على سبيل المثال، ceiling(255, -1))، تكون النتيجة غير معرّفة.
الصياغة
ceiling(x[, N])الأسماء البديلة: ceiling
الوسيطات
x— القيمة المراد تقريبها.Float*أوDecimal*أو(U)Int*N— اختياري. عدد المنازل العشرية المطلوب التقريب إليها. القيمة الافتراضية هي صفر، ما يعني التقريب إلى عدد صحيح. ويمكن أن تكون سالبة.(U)Int*
القيمة المُعادة
يعيد عددًا مُقرَّبًا من النوع نفسه لـ x. Float* أو Decimal* أو (U)Int*
أمثلة
الاستخدام الأساسي
SELECT ceiling(123.45, 1) AS rounded┌─rounded─┐
│ 123.5 │
└─────────┘الدقة السالبة
SELECT ceiling(123.45, -1)┌─ceiling(123.45, -1)─┐
│ 130 │
└─────────────────────┘floor
أُضيف في: v1.1.0
يعيد أكبر عدد مُقرَّب أصغر من x أو مساوياً له، بحيث يكون العدد المُقرَّب من مضاعفات 1 / 10 * N، أو أقرب عدد من نوع البيانات المناسب إذا لم تكن 1 / 10 * N قيمة دقيقة.
يمكن تقريب الوسيطات الصحيحة باستخدام وسيطة N سالبة.
أما إذا كانت N غير سالبة، فتعيد الدالة x.
إذا أدى التقريب إلى تجاوز السعة (على سبيل المثال، floor(-128, -1))، فإن النتيجة غير معرّفة.
الصياغة
floor(x[, N])الوسيطات
x— القيمة المطلوب تقريبها.Float*أوDecimal*أو(U)Int*N— اختياري. عدد المنازل العشرية المراد التقريب إليها. القيمة الافتراضية هي صفر، ما يعني التقريب إلى عدد صحيح. يمكن أن تكون سالبة.(U)Int*
القيمة المعادة
يعيد عددًا مقرَّبًا من النوع نفسه لـ x. Float* أو Decimal* أو (U)Int*
أمثلة
مثال للاستخدام
SELECT floor(123.45, 1) AS rounded┌─rounded─┐
│ 123.4 │
└─────────┘الدقة السالبة
SELECT floor(123.45, -1)┌─floor(123.45, -1)─┐
│ 120 │
└───────────────────┘round
أُضيف في: v1.1.0
تقرّب هذه الدالة قيمة إلى عدد محدد من المنازل العشرية N.
- إذا كانت
N > 0، فتقرّب الدالة إلى يمين الفاصلة العشرية. - إذا كانت
N < 0، فتقرّب الدالة إلى يسار الفاصلة العشرية. - إذا كانت
N = 0، فتقرّب الدالة إلى أقرب عدد صحيح.
تعيد الدالة أقرب عدد في المرتبة المحددة.
إذا كانت قيمة الإدخال على بُعد متساوٍ من عددين متجاورين، تستخدم الدالة تقريب المصرفيين لمدخلات Float*، وتقرّب بعيدًا عن الصفر لأنواع الأعداد الأخرى (Decimal*).
إذا أدى التقريب إلى تجاوز السعة (على سبيل المثال، round(255, -1))، فالنتيجة غير معرّفة.
الصياغة
round(x[, N])الوسيطات
x— رقم يُراد تقريبه.Float*أوDecimal*أو(U)Int*N— اختياري. عدد المنازل العشرية المطلوب التقريب إليها. القيمة الافتراضية هي0.(U)Int*
القيمة المُعادة
يعيد رقمًا مُقرَّبًا من النوع نفسه مثل x. Float* أو Decimal* أو (U)Int*
أمثلة
مدخلات Float
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;┌───x─┬─round(x)─┐
│ 0 │ 0 │
│ 0.5 │ 0 │
│ 1 │ 1 │
└─────┴──────────┘قيم الإدخال من نوع Decimal
SELECT cast(number / 2 AS Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;┌───x─┬─round(x)─┐
│ 0 │ 0 │
│ 0.5 │ 1 │
│ 1 │ 1 │
└─────┴──────────┘roundAge
أُضيفت في: v1.1.0
تأخذ رقمًا يمثّل عمر إنسان، وتقارنه بالفئات العمرية القياسية، ثم تُرجع إما الحد الأدنى أو الحد الأعلى للفئة العمرية التي يقع ضمنها هذا الرقم.
- تُرجع
0عندما يكونage < 1. - تُرجع
17عندما يكون1 ≤ age ≤ 17. - تُرجع
18عندما يكون18 ≤ age ≤ 24. - تُرجع
25عندما يكون25 ≤ age ≤ 34. - تُرجع
35عندما يكون35 ≤ age ≤ 44. - تُرجع
45عندما يكون45 ≤ age ≤ 54. - تُرجع
55عندما يكونage ≥ 55.
الصياغة
roundAge(num)الوسيطات
القيمة المُعادة
يعيد إما أعلى عمر أو أدنى عمر للنطاق الذي يقع ضمنه age. UInt8
أمثلة
مثال على الاستخدام
SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);┌─number─┬─roundAge(number)─┐
│ 0 │ 0 │
│ 5 │ 17 │
│ 20 │ 18 │
│ 31 │ 25 │
│ 37 │ 35 │
│ 54 │ 45 │
│ 72 │ 55 │
└────────┴──────────────────┘roundBankers
أُضيف في: v20.1.0
يقرّب عددًا إلى منزلة عشرية محددة N.
إذا كانت قيمة التقريب تقع تمامًا في المنتصف بين عددين، فتستخدم الدالة أسلوب تقريب يُسمّى تقريب المصرفيين، وهو أسلوب التقريب الافتراضي للأعداد ذات الفاصلة العائمة المعرّفة وفق IEEE 754.
- إذا كانت
N > 0، فإن الدالة تقرّب إلى يمين الفاصلة العشرية - إذا كانت
N < 0، فإن الدالة تقرّب إلى يسار الفاصلة العشرية - إذا كانت
N = 0، فإن الدالة تقرّب إلى أقرب عدد صحيح
الصياغة
roundBankers(x[, N])الوسيطات
x— رقم يُراد تقريبه.(U)Int*أوDecimal*أوFloat*[, N]— اختياري. عدد المنازل العشرية المطلوب التقريب إليها. القيمة الافتراضية هي0.(U)Int*
القيمة المُعادة
تُعيد قيمةً مُقرَّبة باستخدام أسلوب تقريب المصرفيين. (U)Int* أو Decimal* أو Float*
أمثلة
الاستخدام الأساسي
SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10┌───x─┬─b─┐
│ 0 │ 0 │
│ 0.5 │ 0 │
│ 1 │ 1 │
│ 1.5 │ 2 │
│ 2 │ 2 │
│ 2.5 │ 2 │
│ 3 │ 3 │
│ 3.5 │ 4 │
│ 4 │ 4 │
│ 4.5 │ 4 │
└─────┴───┘roundDown
أُضيف في: v20.1.0
يقرّب عددًا نزولًا إلى أحد عناصر المصفوفة المحددة. إذا كانت القيمة أقل من الحد الأدنى، فسيُعاد الحد الأدنى.
الصياغة
roundDown(num, arr)الوسيطات
num— رقم يُراد تقريبه نزولًا.(U)Int*أوDecimal*أوFloat*arr— مصفوفة من العناصر التي يُقرَّبnumنزولًا إلى أحدها.Array((U)Int*)أوArray(Float*)
القيمة المعادة
يُرجع رقمًا مُقرَّبًا نزولًا إلى أحد العناصر في arr. إذا كانت القيمة أقل من الحد الأدنى، فسيُرجع الحد الأدنى. (U)Int* أو Float*
الأمثلة
مثال على الاستخدام
SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)┌─number─┬─roundDown(number, [3, 4, 5])─┐
│ 0 │ 3 │
│ 1 │ 3 │
│ 2 │ 3 │
│ 3 │ 3 │
│ 4 │ 4 │
│ 5 │ 5 │
└────────┴──────────────────────────────┘roundDuration
أُضيف في: v1.1.0
يُقرِّب عددًا إلى الأسفل إلى أقرب قيمة ضمن مجموعة من المدد شائعة الاستخدام: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000.
إذا كان العدد أقل من واحد، فستكون القيمة المعادة 0.
الصيغة
roundDuration(num)الوسيطات
القيمة المُعادة
يعيد 0 إذا كان num < 1. وإلا، فيعيد إحدى القيم التالية: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. UInt16
أمثلة
مثال على الاستخدام
SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)┌─number─┬─roundDuration(number)─┐
│ 0 │ 0 │
│ 9 │ 1 │
│ 19 │ 10 │
│ 47 │ 30 │
│ 101 │ 60 │
│ 149 │ 120 │
│ 205 │ 180 │
│ 271 │ 240 │
│ 421 │ 300 │
│ 789 │ 600 │
│ 1423 │ 1200 │
│ 2345 │ 1800 │
│ 4567 │ 3600 │
│ 9876 │ 7200 │
│ 24680 │ 18000 │
│ 42573 │ 36000 │
└────────┴───────────────────────┘roundToExp2
تم تقديمه في: v1.1.0
يقرّب عددًا إلى الأسفل إلى أقرب قوة للعدد اثنين (عدد صحيح وغير سالب).
إذا كان العدد أقل من واحد، فستُعاد القيمة 0.
الصيغة
roundToExp2(num)الوسيطات
القيمة المعادة
يعيد num بعد تقريبه نزولًا إلى أقرب قوة للعدد اثنين (عدد صحيح غير سالب)، وإلا يعيد 0 إذا كان num < 1. (U)Int* أو Float*
أمثلة
مثال على الاستخدام
SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)┌─number─┬─roundToExp2(number)─┐
│ 0 │ 0 │
│ 2 │ 2 │
│ 5 │ 4 │
│ 10 │ 8 │
│ 19 │ 16 │
│ 50 │ 32 │
└────────┴─────────────────────┘trunc
قُدِّم في: v1.1.0
مثل floor، لكنه يعيد العدد المقرَّب ذي أكبر قيمة مطلقة تكون أقل من أو مساوية للقيمة المطلقة لـ x.
الصيغة
truncate(x[, N])الأسماء البديلة: truncate
الوسيطات
x— القيمة المطلوب تقريبها.Float*أوDecimal*أو(U)Int*N— اختياري. عدد المنازل العشرية المطلوب التقريب إليها. القيمة الافتراضية هي صفر، ما يعني التقريب إلى عدد صحيح.(U)Int*
القيمة المُعادة
يعيد عددًا مقربًا من النوع نفسه لـ x. Float* أو Decimal* أو (U)Int*
أمثلة
الاستخدام الأساسي
SELECT truncate(123.499, 1) AS res;┌───res─┐
│ 123.4 │
└───────┘