التقريب والاقتطاع
ROUND وCEIL وFLOOR وTRUNC
التقريب والاقتطاع درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
أهمية التقريب
عند التعامل مع الأرقام في SQL، ستحصلون غالبًا على نتائج تحتوي على منازل عشرية كثيرة. فعلى سبيل المثال، تعطي قسمة 10 على 3 النتيجة 3.3333333...
يوفر SQL دوال مضمّنة للتحكم في عدد المنازل العشرية التي تعرضونها أو تخزنونها: ROUND وCEIL وFLOOR وTRUNC. وتُعد هذه الدوال أساسية لعرض الأرقام المالية والقياسات والإحصاءات بصورة واضحة.
SELECT 10.0 / 3.0 AS raw_result;الاستخدام الأساسي لـ ROUND
تقرّب الدالة ROUND() عددًا إلى عدد محدد من المنازل العشرية. وهي تتبع قواعد التقريب المعتادة: تُقرَّب الأرقام 5 فأعلى إلى الأعلى، والأرقام الأقل من 5 إلى الأسفل.
الصيغة هي: ROUND(number, decimal_places). وإذا حذفتم الوسيطة الثانية، فسيُقرَّب العدد إلى أقرب عدد صحيح.
SELECT
ROUND(3.14159, 2) AS two_decimals,
ROUND(3.14159, 0) AS zero_decimals,
ROUND(3.14159) AS no_arg;ROUND مع منازل سالبة
من الميزات الأقل شهرة في ROUND() إمكانية تمرير عدد سالب كوسيطة ثانية. يؤدي ذلك إلى التقريب إلى يسار الفاصلة العشرية، وهو مفيد للتقريب إلى أقرب عشرة أو مئة أو ألف.
فعلى سبيل المثال، تقرّب ROUND(1567, -2) إلى أقرب مئة وتعطي 1600.
SELECT
ROUND(1567.89, -1) AS nearest_ten,
ROUND(1567.89, -2) AS nearest_hundred,
ROUND(1567.89, -3) AS nearest_thousand;CEIL: التقريب دائمًا إلى الأعلى
تقرّب CEIL() (وتُكتب أيضًا CEILING() في بعض قواعد البيانات) العدد دائمًا إلى الأعلى إلى أقرب عدد صحيح، بغض النظر عن الجزء العشري.
يفيد ذلك عندما تحتاجون إلى ضمان عدم النزول عن حد أدنى؛ مثلًا عند حساب عدد الصفحات اللازمة لعرض مجموعة من النتائج.
SELECT
CEIL(4.1) AS ceil_4_1,
CEIL(4.9) AS ceil_4_9,
CEIL(-4.1) AS ceil_neg_4_1,
CEIL(-4.9) AS ceil_neg_4_9;FLOOR: التقريب دائمًا إلى الأسفل
تقرّب FLOOR() العدد دائمًا إلى الأسفل إلى أقرب عدد صحيح، بغض النظر عن الجزء العشري.
لاحظوا أنه بالنسبة إلى الأعداد السالبة، يقرّب FLOOR بعيدًا عن الصفر؛ إذ تعطي FLOOR(-4.1) القيمة -5، وليس -4. وهذا عكس ما يتوقعه بعض المبتدئين.
SELECT
FLOOR(4.9) AS floor_4_9,
FLOOR(4.1) AS floor_4_1,
FLOOR(-4.1) AS floor_neg_4_1,
FLOOR(-4.9) AS floor_neg_4_9;مقارنة بين CEIL وFLOOR
تجعل رؤية CEIL وFLOOR معًا فهم الفرق بينهما سهلًا. فـ CEIL يتجه دائمًا إلى العدد الصحيح التالي، بينما يتجه FLOOR دائمًا إلى العدد الصحيح السابق.
تخيلوا الأمر كأنه مبنى: FLOOR هو مستوى الأرض الذي تهبطون إليه، وCEIL هو السقف الذي تصعدون إليه.
SELECT
2.3 AS original,
CEIL(2.3) AS ceil_result,
FLOOR(2.3) AS floor_result
UNION ALL
SELECT
7.8,
CEIL(7.8),
FLOOR(7.8);TRUNC: الاقتطاع دون تقريب
تزيل TRUNC() (أو TRUNCATE() في MySQL) الأرقام العشرية من دون أي تقريب. فهي تقتطع ببساطة الأرقام التي تأتي بعد الموضع المحدد.
وهذا يختلف عن ROUND؛ إذ تعطي TRUNC(4.9) القيمة 4، وليس 5. فالجزء العشري يُهمَل فحسب.
SELECT
TRUNC(4.9) AS trunc_4_9,
TRUNC(4.1) AS trunc_4_1,
TRUNC(-4.9) AS trunc_neg_4_9,
TRUNC(3.14159, 3) AS trunc_3_decimals;مقارنة بين ROUND وTRUNC
يتمثل الفرق الأساسي بين ROUND وTRUNC في أن ROUND تغيّر القيمة استنادًا إلى الرقم التالي، بينما تحذف TRUNC دائمًا كل ما يأتي بعد موضع الاقتطاع من دون تعديل.
استخدموا ROUND عندما تريدون القيمة الأقرب رياضيًا، وTRUNC عندما تريدون إزالة الدقة الزائدة تمامًا من دون أي تعديل إلى الأعلى؛ وهو أمر شائع في الحسابات المالية التي يجب فيها ألا تدفعوا أكثر من اللازم.
SELECT
ROUND(2.567, 1) AS rounded,
TRUNC(2.567, 1) AS truncated;
-- ROUND gives 2.6 (5 rounds up)
-- TRUNC gives 2.5 (just cuts off)استخدام ROUND في جدول واقعي
تكون دوال التقريب أكثر فاعلية عند تطبيقها على أعمدة الجداول. ننشئ هنا جدول products بسيطًا يحتوي على الأسعار، ونستخدم ROUND لعرضها بصورة واضحة.
يشيع هذا النمط جدًا في استعلامات التجارة الإلكترونية والمحاسبة، حيث تؤدي الحسابات الأولية إلى إنتاج منازل عشرية كثيرة.
CREATE TABLE products (
name TEXT,
price NUMERIC
);
INSERT INTO products VALUES
('Widget', 9.999),
('Gadget', 24.3333),
('Doohickey', 4.5678);
SELECT name, ROUND(price, 2) AS display_price
FROM products;دمج الدوال في استعلام
يمكنكم دمج دوال التقريب مع تعبيرات SQL أخرى. فعلى سبيل المثال، احسبوا سعرًا بعد الخصم، ثم قرّبوه لعرضه.
يطبّق هذا الاستعلام خصمًا بنسبة 15%، ويقرّب النتيجة إلى منزلتين عشريتين، ويعرض أيضًا قيمتي FLOOR وCEIL للسعر بعد الخصم، مما يمنحكم سعرين صحيحين أدنى وأعلى.
SELECT
name,
price,
ROUND(price * 0.85, 2) AS discounted,
FLOOR(price * 0.85) AS min_price,
CEIL(price * 0.85) AS max_price
FROM products;الترقيم بالصفحات باستخدام CEIL
من الاستخدامات الكلاسيكية لـ CEIL حساب إجمالي عدد الصفحات في نظام ترقيم الصفحات. إذا كان لديكم 97 صفًا وتعرضون 10 صفوف في كل صفحة، فستحتاجون إلى CEIL(97 / 10.0) = 10 صفحات، وليس 9، لأن الصفحة الأخيرة تحتوي على 7 صفوف.
اقسموا دائمًا على قيمة عشرية (10.0 وليس 10) لتجنب القسمة الصحيحة التي ستتجاهل الباقي قبل أن تتمكن CEIL من التعامل معه.
SELECT
97 AS total_rows,
10 AS rows_per_page,
CEIL(97 / 10.0) AS total_pages;اختبار سريع
اختبروا فهمكم لدوال التقريب في SQL.
مراجعة الدرس
أحسنتم! إليكم ملخصًا لدوال التقريب والاقتطاع في SQL:
- ROUND(n, d) — تقرّب إلى d منازل عشرية باستخدام القواعد الرياضية المعتادة (تُقرَّب القيم 5 فأعلى إلى الأعلى).
- CEIL(n) — تقرّب دائمًا إلى الأعلى إلى أقرب عدد صحيح.
- FLOOR(n) — تقرّب دائمًا إلى الأسفل إلى أقرب عدد صحيح.
- TRUNC(n, d) — تزيل الأرقام بعد الموضع d من دون تقريب، ولا تزيد القيمة أبدًا.
استخدموا ROUND للعرض والإحصاءات، وCEIL لحسابات السعة الدنيا مثل الصفحات، وFLOOR لحسابات الحد الأقصى الذي يمكن استيعابه، وTRUNC عندما يجب ألا تقرّبوا إلى الأعلى أبدًا، ولا سيما في السياقات المالية.
الأسئلة الشائعة
هل درس «التقريب والاقتطاع» مجاني؟
نعم — نص درس «التقريب والاقتطاع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «التقريب والاقتطاع»؟
ROUND وCEIL وFLOOR وTRUNC تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «التقريب والاقتطاع»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الحساب والمعاملات
- التقريب والاقتطاع
- القسمة الصحيحة مقابل العشرية
- دوال رياضية مفيدة