> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> توثيق نوع البيانات SimpleAggregateFunction

# نوع البيانات SimpleAggregateFunction

<div id="description">
  ## الوصف
</div>

يخزّن نوع البيانات `SimpleAggregateFunction` الحالة الوسيطة لدالة
تجميعي، ولكن ليس حالتها الكاملة كما يفعل النوع [`AggregateFunction`](/docs/ar/reference/data-types/aggregatefunction).

يمكن تطبيق هذا التحسين على الدوال التي تتحقق فيها الخاصية التالية:

> يمكن الحصول على نتيجة تطبيق الدالة `f` على مجموعة الصفوف `S1 UNION ALL S2`
> بتطبيق `f` على أجزاء مجموعة الصفوف كلٌّ على حدة، ثم
> بتطبيق `f` مرة أخرى على النتائج: `f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2))`.

تضمن هذه الخاصية أن نتائج التجميع الجزئية تكفي لحساب
النتيجة المجمّعة، لذلك لا نحتاج إلى تخزين أو معالجة أي بيانات إضافية. على
سبيل المثال، لا تتطلب نتيجة الدالتين `min` أو `max` أي خطوات إضافية
لحساب النتيجة النهائية انطلاقًا من الخطوات الوسيطة، بينما تتطلب الدالة `avg`
الاحتفاظ بالمجموع والعدد، ثم قسمة الأول على الثاني للحصول على
المتوسط في خطوة `Merge` نهائية تجمع الحالات الوسيطة.

تُنتَج قيم دوال تجميعي عادةً باستدعاء دالة تجميعي
مع إلحاق المُركِّب [`-SimpleState`](/docs/ar/reference/functions/aggregate-functions/combinators#-simplestate) باسم الدالة.

<div id="syntax">
  ## الصياغة
</div>

```sql theme={null}
SimpleAggregateFunction(aggregate_function_name, types_of_arguments...)
```

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

* `aggregate_function_name` - اسم دالة تجميعية.
* `Type` - أنواع وسيطات الدالة التجميعية.

<div id="supported-functions">
  ## الدوال المدعومة
</div>

الدوال التجميعية التالية مدعومة:

* [`any`](/docs/ar/reference/functions/aggregate-functions/any)
* [`any_respect_nulls`](/docs/ar/reference/functions/aggregate-functions/any)
* [`anyLast`](/docs/ar/reference/functions/aggregate-functions/anyLast)
* [`anyLast_respect_nulls`](/docs/ar/reference/functions/aggregate-functions/anyLast)
* [`min`](/docs/ar/reference/functions/aggregate-functions/min)
* [`max`](/docs/ar/reference/functions/aggregate-functions/max)
* [`sum`](/docs/ar/reference/functions/aggregate-functions/sum)
* [`sumWithOverflow`](/docs/ar/reference/functions/aggregate-functions/sumWithOverflow)
* [`groupBitAnd`](/docs/ar/reference/functions/aggregate-functions/groupBitAnd)
* [`groupBitOr`](/docs/ar/reference/functions/aggregate-functions/groupBitOr)
* [`groupBitXor`](/docs/ar/reference/functions/aggregate-functions/groupBitXor)
* [`groupArrayArray`](/docs/ar/reference/functions/aggregate-functions/groupArrayArray)
* [`groupUniqArrayArray`](/docs/ar/reference/functions/aggregate-functions/groupUniqArray)
* [`groupUniqArrayArrayMap`](/docs/ar/reference/functions/aggregate-functions/combinators#-map)
* [`sumMap` (`sumMappedArrays`)](/docs/ar/reference/functions/aggregate-functions/sumMap)
* [`minMap` (`minMappedArrays`)](/docs/ar/reference/functions/aggregate-functions/minMap)
* [`maxMap` (`maxMappedArrays`)](/docs/ar/reference/functions/aggregate-functions/maxMap)

<Note>
  تكون قيم `SimpleAggregateFunction(func, Type)` من نفس `Type`،
  لذلك، بخلاف النوع `AggregateFunction`، لا حاجة إلى تطبيق
  المُركِّبات `-Merge`/`-State`.

  يوفّر النوع `SimpleAggregateFunction` أداءً أفضل من `AggregateFunction`
  للدوال التجميعية نفسها.
</Note>

<div id="example">
  ## مثال
</div>

```sql theme={null}
CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;
```

<div id="related-content">
  ## محتوى ذو صلة
</div>

* مدونة: [استخدام مُركِّبات التجميع في ClickHouse](https://clickhouse.com/blog/aggregate-functions-combinators-in-clickhouse-for-arrays-maps-and-states)
* النوع [AggregateFunction](/docs/ar/reference/data-types/aggregatefunction).
