- دوال التجميع المعلَّمية، التي تقبل معلمات أخرى بالإضافة إلى الأعمدة.
- المُركِّبات، التي تغيّر سلوك دوال التجميع.
معالجة NULL
NULL. وإذا كان للتجميع عدة وسيطات، فسيتجاهل أي صف تكون فيه واحدة أو أكثر منها NULL.
هناك استثناء لهذه القاعدة، وهو الدالتان first_value وlast_value وأسماؤهما المستعارة (any وanyLast على الترتيب) عند إلحاقهما بالمُعدِّل RESPECT NULLS. على سبيل المثال، FIRST_VALUE(b) RESPECT NULLS.
أمثلة:
لننظر إلى هذا الجدول:
y:
groupArray لإنشاء مصفوفة من العمود y:
groupArray لا يتضمن NULL في المصفوفة الناتجة.
يمكنك استخدام COALESCE لتحويل NULL إلى قيمة مناسبة لحالة الاستخدام لديك. على سبيل المثال: سيستخدم avg(COALESCE(column, 0)) قيمة العمود في التجميع، أو الصفر إذا كانت NULL:
NULL. إن Tuple الذي يحتوي فقط على قيمة NULL لا يُعد NULL، لذلك لن تتخطى دالة التجميع ذلك الصف بسبب قيمة NULL هذه.
count بدون وسائط (count()) أو مع وسائط ثابتة (count(1)) سيحسب جميع الصفوف في الكتلة (بغض النظر عن قيمة عمود GROUP BY لأنه ليس وسيطًا)، بينما count(column) لن يعيد إلا عدد الصفوف التي لا تكون فيها قيمة column هي NULL.
RESPECT NULLS، حيث نرى أن قيم الإدخال NULL تتم مراعاتها، وسيُرجع أول قيمة مقروءة، سواء كانت NULL أم لا: