الانتقال إلى المحتوى الرئيسي

count

أُضيفت في: v1.1.0 تحسب عدد الصفوف أو القيم غير NULL. يدعم ClickHouse الصيغ التالية للدالة count:
  • count(expr) أو COUNT(DISTINCT expr).
  • count() أو COUNT(*). الصيغة count() خاصة بـ ClickHouse.
التفاصيل يدعم ClickHouse الصيغة COUNT(DISTINCT ...). ويعتمد سلوك هذا التركيب على الإعداد count_distinct_implementation. فهو يحدد أي دالة من دوال uniq* تُستخدم لتنفيذ العملية. والدالة الافتراضية هي uniqExact. يُحسَّن الاستعلام SELECT count() FROM table افتراضيًا باستخدام البيانات الوصفية من MergeTree. إذا كنت بحاجة إلى استخدام أمان على مستوى الصفوف، فعطّل هذا التحسين باستخدام الإعداد optimize_trivial_count_query. ومع ذلك، يمكن تحسين الاستعلام SELECT count(nullable_column) FROM table عبر تمكين الإعداد optimize_functions_to_subcolumns. وعند ضبط optimize_functions_to_subcolumns = 1، تقرأ الدالة العمود الفرعي null فقط بدلًا من قراءة بيانات العمود كاملةً ومعالجتها. ويتحول الاستعلام SELECT count(n) FROM table إلى SELECT sum(NOT n.null) FROM table.
تحسين أداء COUNT(DISTINCT expr)إذا كان استعلام COUNT(DISTINCT expr) بطيئًا، ففكّر في إضافة عبارة GROUP BY، لأن ذلك يحسّن التوازي. ويمكنك أيضًا استخدام projection لإنشاء فهرس على العمود المستهدف المستخدم مع COUNT(DISTINCT target_col).
الصياغة
count([expr])
المعاملات
  • expr — اختياري. تعبير. تحسب الدالة عدد المرات التي أعاد فيها هذا التعبير قيمة غير NULL. Expression
القيمة المُعادة تعيد عدد الصفوف إذا استُدعيت الدالة بدون معاملات، وإلا فتعيد عدد المرات التي أعاد فيها التعبير المُمرَّر قيمة غير NULL. UInt64 أمثلة عدد الصفوف البسيط
Query
SELECT count() FROM t
Response
┌─count()─┐
│       5 │
└─────────┘
مثال على COUNT(DISTINCT)
Query
-- This example shows that `count(DISTINCT num)` is performed by the `uniqExact` function according to the `count_distinct_implementation` setting value.
SELECT name, value FROM system.settings WHERE name = 'count_distinct_implementation';
SELECT count(DISTINCT num) FROM t
Response
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─uniqExact(num)─┐
│              3 │
└────────────────┘
آخر تعديل في ٢٥ يونيو ٢٠٢٦