> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> يُحصي عدد الصفوف أو القيم غير NULL.

# count

<div id="count">
  ## count
</div>

أُضيفت في: v1.1.0

تحسب عدد الصفوف أو القيم غير NULL.

يدعم ClickHouse الصيغ التالية للدالة `count`:

* `count(expr)` أو `COUNT(DISTINCT expr)`.
* `count()` أو `COUNT(*)`. الصيغة `count()` خاصة بـ ClickHouse.

**التفاصيل**

يدعم ClickHouse الصيغة `COUNT(DISTINCT ...)`.
ويعتمد سلوك هذا التركيب على الإعداد [`count_distinct_implementation`](/ar/reference/settings/session-settings#count_distinct_implementation).
فهو يحدد أي دالة من دوال [uniq\*](/ar/reference/functions/aggregate-functions/uniq) تُستخدم لتنفيذ العملية.
والدالة الافتراضية هي [uniqExact](/ar/reference/functions/aggregate-functions/uniqExact).

يُحسَّن الاستعلام `SELECT count() FROM table` افتراضيًا باستخدام البيانات الوصفية من MergeTree.
إذا كنت بحاجة إلى استخدام أمان على مستوى الصفوف، فعطّل هذا التحسين باستخدام الإعداد [`optimize_trivial_count_query`](/ar/reference/settings/session-settings#optimize_trivial_count_query).

ومع ذلك، يمكن تحسين الاستعلام `SELECT count(nullable_column) FROM table` عبر تمكين الإعداد [`optimize_functions_to_subcolumns`](/ar/reference/settings/session-settings#optimize_functions_to_subcolumns).
وعند ضبط `optimize_functions_to_subcolumns = 1`، تقرأ الدالة العمود الفرعي [`null`](/ar/reference/data-types/nullable#finding-null) فقط بدلًا من قراءة بيانات العمود كاملةً ومعالجتها.
ويتحول الاستعلام `SELECT count(n) FROM table` إلى `SELECT sum(NOT n.null) FROM table`.

<Tip>
  **تحسين أداء COUNT(DISTINCT expr)**

  إذا كان استعلام `COUNT(DISTINCT expr)` بطيئًا، ففكّر في إضافة عبارة [`GROUP BY`](/ar/reference/statements/select/group-by)، لأن ذلك يحسّن التوازي.
  ويمكنك أيضًا استخدام [projection](/ar/reference/statements/alter/projection) لإنشاء فهرس على العمود المستهدف المستخدم مع `COUNT(DISTINCT target_col)`.
</Tip>

**الصياغة**

```sql theme={null}
count([expr])
```

**المعاملات**

* `expr` — اختياري. تعبير. تحسب الدالة عدد المرات التي أعاد فيها هذا التعبير قيمة غير NULL. [`Expression`](/ar/reference/data-types/special-data-types/expression)

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

تعيد عدد الصفوف إذا استُدعيت الدالة بدون معاملات، وإلا فتعيد عدد المرات التي أعاد فيها التعبير المُمرَّر قيمة غير NULL. [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

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

```sql title=Query theme={null}
SELECT count() FROM t
```

```response title=Response theme={null}
┌─count()─┐
│       5 │
└─────────┘
```

**مثال على COUNT(DISTINCT)**

```sql title=Query theme={null}
-- 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 title=Response theme={null}
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─uniqExact(num)─┐
│              3 │
└────────────────┘
```
