Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

count

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([expr])

المعاملات

  • expr — اختياري. تعبير. تحسب الدالة عدد المرات التي أعاد فيها هذا التعبير قيمة غير NULL. Expression

القيمة المُعادة

تعيد عدد الصفوف إذا استُدعيت الدالة بدون معاملات، وإلا فتعيد عدد المرات التي أعاد فيها التعبير المُمرَّر قيمة غير NULL. UInt64

أمثلة

عدد الصفوف البسيط

CREATE TABLE t (num UInt8) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (2), (3);

SELECT count() FROM t
┌─count()─┐
│       5 │
└─────────┘

مثال على COUNT(DISTINCT)

-- 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
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─countDistinct(num)─┐
│                  3 │
└────────────────────┘
Navigation