الانتقال إلى المحتوى الرئيسي
تعمل دوال التجميع بالطريقة المعتادة، كما هو متوقع لدى خبراء قواعد البيانات. كما يدعم ClickHouse ما يلي:

معالجة 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:
يمكنك أيضًا استخدام Tuple لتجاوز سلوك تخطي NULL. إن Tuple الذي يحتوي فقط على قيمة NULL لا يُعد NULL، لذلك لن تتخطى دالة التجميع ذلك الصف بسبب قيمة NULL هذه.
لاحظ أن عمليات التجميع يتم تجاهلها عندما تُستخدم الأعمدة كوسائط لدالة التجميع. على سبيل المثال، فإن count بدون وسائط (count()) أو مع وسائط ثابتة (count(1)) سيحسب جميع الصفوف في الكتلة (بغض النظر عن قيمة عمود GROUP BY لأنه ليس وسيطًا)، بينما count(column) لن يعيد إلا عدد الصفوف التي لا تكون فيها قيمة column هي NULL.
وهنا مثال على first_value مع RESPECT NULLS، حيث نرى أن قيم الإدخال NULL تتم مراعاتها، وسيُرجع أول قيمة مقروءة، سواء كانت NULL أم لا:
آخر تعديل في ٢ يوليو ٢٠٢٦