الانتقال إلى المحتوى الرئيسي
تم إنشاء الوثائق أدناه من جدول النظام system.functions

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* أمثلة الاستخدام الأساسي
Query
SELECT ceiling(123.45, 1) AS rounded
Response
┌─rounded─┐
│   123.5 │
└─────────┘
الدقة السالبة
Query
SELECT ceiling(123.45, -1)
Response
┌─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* أمثلة مثال للاستخدام
Query
SELECT floor(123.45, 1) AS rounded
Response
┌─rounded─┐
│   123.4 │
└─────────┘
الدقة السالبة
Query
SELECT floor(123.45, -1)
Response
┌─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
Query
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;
Response
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        0 │
│   1 │        1 │
└─────┴──────────┘
قيم الإدخال من نوع Decimal
Query
SELECT cast(number / 2 AS  Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;
Response
┌───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 — رقم يمثّل عمرًا بالسنوات. (U)Int* أو Float*
القيمة المُعادة يعيد إما أعلى عمر أو أدنى عمر للنطاق الذي يقع ضمنه age. UInt8 أمثلة مثال على الاستخدام
Query
SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);
Response
┌─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، فإن الدالة تقرّب إلى أقرب عدد صحيح
ملاحظات
  • عندما تقع قيمة التقريب تمامًا في المنتصف بين عددين، تُقرَّب إلى أقرب رقم زوجي عند المنزلة العشرية المحددة. على سبيل المثال: يُقرَّب 3.5 إلى الأعلى ليصبح 4، ويُقرَّب 2.5 إلى الأسفل ليصبح 2.
  • تُجري الدالة round التقريب نفسه للأعداد ذات الفاصلة العائمة.
  • تقوم الدالة roundBankers أيضًا بتقريب الأعداد الصحيحة بالطريقة نفسها، على سبيل المثال: roundBankers(45, -1) = 40.
  • في الحالات الأخرى، تقرّب الدالة الأعداد إلى أقرب عدد صحيح.
استخدم تقريب المصرفيين عند جمع الأعداد أو طرحهاباستخدام تقريب المصرفيين، يمكنك تقليل أثر تقريب الأعداد في نتائج جمعها أو طرحها.على سبيل المثال، اجمع الأعداد 1.5, 2.5, 3.5, 4.5 باستخدام أساليب تقريب مختلفة:
  • من دون تقريب: 1.5 + 2.5 + 3.5 + 4.5 = 12.
  • تقريب المصرفيين: 2 + 2 + 4 + 4 = 12.
  • التقريب إلى أقرب عدد صحيح: 2 + 3 + 4 + 5 = 14.
الصياغة
roundBankers(x[, N])
الوسيطات
  • x — رقم يُراد تقريبه. (U)Int* أو Decimal* أو Float*
  • [, N] — اختياري. عدد المنازل العشرية المطلوب التقريب إليها. القيمة الافتراضية هي 0. (U)Int*
القيمة المُعادة تُعيد قيمةً مُقرَّبة باستخدام أسلوب تقريب المصرفيين. (U)Int* أو Decimal* أو Float* أمثلة الاستخدام الأساسي
Query
SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10
Response
┌───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)
الوسيطات القيمة المعادة يُرجع رقمًا مُقرَّبًا نزولًا إلى أحد العناصر في arr. إذا كانت القيمة أقل من الحد الأدنى، فسيُرجع الحد الأدنى. (U)Int* أو Float* الأمثلة مثال على الاستخدام
Query
SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)
Response
┌─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)
الوسيطات
  • num — رقم يُقرَّب إلى أحد الأرقام ضمن مجموعة المدد الشائعة. (U)Int* أو Float*
القيمة المُعادة يعيد 0 إذا كان num < 1. وإلا، فيعيد إحدى القيم التالية: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. UInt16 أمثلة مثال على الاستخدام
Query
SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)
Response
┌─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 — العدد المراد تقريبه. (U)Int* أو Float*
القيمة المعادة يعيد num بعد تقريبه نزولًا إلى أقرب قوة للعدد اثنين (عدد صحيح غير سالب)، وإلا يعيد 0 إذا كان num < 1. (U)Int* أو Float* أمثلة مثال على الاستخدام
Query
SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)
Response
┌─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* أمثلة الاستخدام الأساسي
Query
SELECT truncate(123.499, 1) AS res;
Response
┌───res─┐
│ 123.4 │
└───────┘
آخر تعديل في ٢٥ يونيو ٢٠٢٦