إرجاع متغير (سلسلة) يشير إلى مكان حدوث رقم ضمن سلسلة محسوبة من النطاقات.
بناء الجملة
Partition( number, start, stop, interval)
يحتوي بناء جملة دالة القسم على هذه الوسيطات:
الوسيطة |
الوصف |
number |
مطلوبة. العدد الكامل الذي تريد تقييمه مقابل النطاقات. |
بدء |
مطلوبة. العدد الكامل الذي يمثل بداية النطاق الإجمالي للأرقام. لا يمكن أن يكون الرقم أقل من 0. |
إيقاف |
مطلوبة. العدد الكامل الذي يمثل نهاية النطاق الإجمالي للأرقام. لا يمكن أن يكون الرقم مساويا أو أقل من تاريخ البدء. |
فاصل |
مطلوبة. العدد الكامل الذي يحدد حجم الأقسام ضمن النطاق الإجمالي للأرقام (بين البدءوالأعلى). |
ملاحظات
تحدد الدالة Partition النطاق المحدد الذي يقع فيه الرقم وترجع متغيرا (سلسلة) يصف هذا النطاق. الدالة Partition هي الأكثر فائدة في الاستعلامات. يمكنك إنشاء استعلام تحديد يوضح عدد الطلبات التي تقع ضمن نطاقات مختلفة، على سبيل المثال، قيم الطلبات من 1 إلى 1000 و1001 إلى 2000 وما إلى ذلك.
يوضح الجدول التالي كيفية تحديد النطاقات باستخدام ثلاث مجموعات من وسيطات البدءوالإيقافوالفاصل الزمني . تعرض أعمدة النطاق الأول والنطاق الأخير ما يرجعه القسم . يتم تمثيل النطاقات بواسطة lowervalue:uppervalue، حيث يتم فصل النهاية المنخفضة (القيمة الدنيا) للنطاق عن الطرف العالي (القيمة العليا) للنطاق بنقطة نقطتين (:).
بدء |
إيقاف |
فاصل |
قبل الأول |
النطاق الأول |
النطاق الأخير |
بعد الأخير |
0 |
99 |
5 |
" :-1" |
" 0: 4" |
" 95: 99" |
" 100: " |
20 |
199 |
10 |
" : 19" |
" 20: 29" |
" 190: 199" |
" 200: " |
100 |
1010 |
20 |
" : 99" |
" 100: 119" |
" 1000: 1010" |
" 1011: " |
في الجدول الموضح أعلاه، يعرض السطر الثالث النتيجة عند بدءوإيقاف تحديد مجموعة من الأرقام التي لا يمكن تقسيمها بالتساوي حسب الفاصل الزمني. يمتد النطاق الأخير إلى الإيقاف (11 رقما) على الرغم من أن الفاصل الزمني هو 20.
إذا لزم الأمر، يقوم القسم بإرجاع نطاق يحتوي على مسافات بادئة كافية بحيث يكون هناك نفس عدد الأحرف إلى يسار النقطتان ويسارها حيث توجد أحرف في الإيقاف، بالإضافة إلى حرف واحد. يضمن هذا أنه إذا كنت تستخدم Partition مع أرقام أخرى، فسيتم التعامل مع النص الناتج بشكل صحيح أثناء أي عملية فرز لاحقة.
إذا كان الفاصل الزمني هو 1، فإن النطاق هو number:number، بغض النظر عن وسيطات البدءوالإيقاف . على سبيل المثال، إذا كان الفاصل الزمني هو 1، فإن الرقم هو 100 والإيقاف هو 1000، ويرجع القسم " 100: 100".
إذا كان أي من الأجزاء فارغا، يقوم القسم بإرجاع Null.
أمثلة الاستعلام
تعبير |
النتائج |
SELECT Partition(unitprice,40,240,20) AS PriceRange, count(productsales.unitprice) AS Count FROM productSales GROUP BY Partition(unitprice,40,240,20); |
إنشاء مجموعة من النطاقات للقيم في الحقل "unitprice" من "start" (40) إلى "stop" (240) بحجم "interval" (20) متساوي وحساب عدد "unitprice" في النطاقات المعنية. عرض النطاقات في العمود PriceRange والعد في العمود 'Count'. |
مثال VBA
يفترض هذا المثال أن لديك جدول طلبات يحتوي على حقل الشحن. يقوم بإنشاء إجراء تحديد يحسب عدد الطلبات التي تقع تكلفة الشحن لها في كل نطاق من عدة نطاقات. يتم استخدام دالة Partition أولا لإنشاء هذه النطاقات، ثم تحسب الدالة SQL Count عدد الطلبات في كل نطاق. في هذا المثال، تبدأ الوسيطات إلى الدالة Partition = 0، stop = 500، الفاصل الزمني = 50. وبالتالي فإن النطاق الأول سيكون 0:49، وهكذا حتى 500.
SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,
Count(Orders.Freight) AS Count FROM Orders GROUP BY Partition([freight],0,500,50);