# AggregateFunctionModule (/docs/core/reference/api/interfaces/AggregateFunctionModule)



[@kysoql/core](/docs/core/reference/api) / AggregateFunctionModule

Aggregate and date-function helpers exposed to expression callbacks.

## Extended by [#extended-by]

* [`SelectFunctionModule`](/docs/core/reference/api/interfaces/SelectFunctionModule)

## Type Parameters [#type-parameters]

| Type Parameter                      | Default type |
| ----------------------------------- | ------------ |
| `DB`                                | -            |
| `TB` *extends* keyof `DB`           | -            |
| `GroupingFields` *extends* `string` | `never`      |

## Methods [#methods]

<a id="api-calendarmonth" />

### calendarMonth() [#calendarmonth]

```ts
calendarMonth<Input>(field): NumericDateFunctionBuilder<DB, TB, "calendarMonth", Input>;
```

Builds `CALENDAR_MONTH(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-1]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"calendarMonth"`, `Input`>

***

<a id="api-calendarquarter" />

### calendarQuarter() [#calendarquarter]

```ts
calendarQuarter<Input>(field): NumericDateFunctionBuilder<DB, TB, "calendarQuarter", Input>;
```

Builds `CALENDAR_QUARTER(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-2]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-1]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-1]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"calendarQuarter"`, `Input`>

***

<a id="api-calendaryear" />

### calendarYear() [#calendaryear]

```ts
calendarYear<Input>(field): NumericDateFunctionBuilder<DB, TB, "calendarYear", Input>;
```

Builds `CALENDAR_YEAR(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-3]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-2]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-2]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"calendarYear"`, `Input`>

***

<a id="api-dayinmonth" />

### dayInMonth() [#dayinmonth]

```ts
dayInMonth<Input>(field): NumericDateFunctionBuilder<DB, TB, "dayInMonth", Input>;
```

Builds `DAY_IN_MONTH(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-4]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-3]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-3]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"dayInMonth"`, `Input`>

***

<a id="api-dayinweek" />

### dayInWeek() [#dayinweek]

```ts
dayInWeek<Input>(field): NumericDateFunctionBuilder<DB, TB, "dayInWeek", Input>;
```

Builds `DAY_IN_WEEK(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-5]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-4]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-4]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"dayInWeek"`, `Input`>

***

<a id="api-dayinyear" />

### dayInYear() [#dayinyear]

```ts
dayInYear<Input>(field): NumericDateFunctionBuilder<DB, TB, "dayInYear", Input>;
```

Builds `DAY_IN_YEAR(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-6]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-5]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-5]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"dayInYear"`, `Input`>

***

<a id="api-dayonly" />

### dayOnly() [#dayonly]

```ts
dayOnly<Input>(field): DayOnlyFunctionBuilder<DB, TB, Input>;
```

Builds `DAY_ONLY(...)` for a datetime field.

#### Type Parameters [#type-parameters-7]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-6]

| Parameter | Type                                                                 |
| --------- | -------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `"datetime"`> |

#### Returns [#returns-6]

`DayOnlyFunctionBuilder`\<`DB`, `TB`, `Input`>

***

<a id="api-fiscalmonth" />

### fiscalMonth() [#fiscalmonth]

```ts
fiscalMonth<Input>(field): NumericDateFunctionBuilder<DB, TB, "fiscalMonth", Input>;
```

Builds `FISCAL_MONTH(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-8]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-7]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-7]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"fiscalMonth"`, `Input`>

***

<a id="api-fiscalquarter" />

### fiscalQuarter() [#fiscalquarter]

```ts
fiscalQuarter<Input>(field): NumericDateFunctionBuilder<DB, TB, "fiscalQuarter", Input>;
```

Builds `FISCAL_QUARTER(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-9]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-8]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-8]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"fiscalQuarter"`, `Input`>

***

<a id="api-fiscalyear" />

### fiscalYear() [#fiscalyear]

```ts
fiscalYear<Input>(field): NumericDateFunctionBuilder<DB, TB, "fiscalYear", Input>;
```

Builds `FISCAL_YEAR(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-10]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-9]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-9]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"fiscalYear"`, `Input`>

***

<a id="api-hourinday" />

### hourInDay() [#hourinday]

```ts
hourInDay<Input>(field): NumericDateFunctionBuilder<DB, TB, "hourInDay", Input>;
```

Builds `HOUR_IN_DAY(...)` for a datetime field.

#### Type Parameters [#type-parameters-11]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-10]

| Parameter | Type                                                                 |
| --------- | -------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `"datetime"`> |

#### Returns [#returns-10]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"hourInDay"`, `Input`>

***

<a id="api-weekinmonth" />

### weekInMonth() [#weekinmonth]

```ts
weekInMonth<Input>(field): NumericDateFunctionBuilder<DB, TB, "weekInMonth", Input>;
```

Builds `WEEK_IN_MONTH(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-12]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-11]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-11]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"weekInMonth"`, `Input`>

***

<a id="api-weekinyear" />

### weekInYear() [#weekinyear]

```ts
weekInYear<Input>(field): NumericDateFunctionBuilder<DB, TB, "weekInYear", Input>;
```

Builds `WEEK_IN_YEAR(...)` for a date or datetime field.

#### Type Parameters [#type-parameters-13]

| Type Parameter                        |
| ------------------------------------- |
| `Input` *extends* `DateFunctionInput` |

#### Parameters [#parameters-12]

| Parameter | Type                                                                             |
| --------- | -------------------------------------------------------------------------------- |
| `field`   | `Input` & `DateFunctionArgument`\<`DB`, `TB`, `Input`, `TemporalSalesforceType`> |

#### Returns [#returns-12]

`NumericDateFunctionBuilder`\<`DB`, `TB`, `"weekInYear"`, `Input`>

***

<a id="api-converttimezone" />

### convertTimezone() [#converttimezone]

```ts
convertTimezone<Reference>(field): ConvertTimezoneFunctionBuilder<Reference>;
```

Builds a Salesforce `convertTimezone(...)` expression.

#### Type Parameters [#type-parameters-14]

| Type Parameter                 |
| ------------------------------ |
| `Reference` *extends* `string` |

#### Parameters [#parameters-13]

| Parameter | Type                                                                                                                                                     |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `field`   | `Reference` & [`DateGroupableFieldReference`](/docs/core/reference/api/type-aliases/DateGroupableFieldReference)\<`DB`, `TB`, `Reference`, `"datetime"`> |

#### Returns [#returns-13]

[`ConvertTimezoneFunctionBuilder`](/docs/core/reference/api/interfaces/ConvertTimezoneFunctionBuilder)\<`Reference`>

***

<a id="api-grouping" />

### grouping() [#grouping]

```ts
grouping<Reference>(field): GroupingFunctionBuilder;
```

Builds a Salesforce `GROUPING(...)` aggregate expression.

#### Type Parameters [#type-parameters-15]

| Type Parameter                 |
| ------------------------------ |
| `Reference` *extends* `string` |

#### Parameters [#parameters-14]

| Parameter | Type                                                                               |
| --------- | ---------------------------------------------------------------------------------- |
| `field`   | `Reference` & `GroupingFieldReference`\<`DB`, `TB`, `GroupingFields`, `Reference`> |

#### Returns [#returns-14]

[`GroupingFunctionBuilder`](/docs/core/reference/api/interfaces/GroupingFunctionBuilder)

***

<a id="api-count" />

### count() [#count]

#### Call Signature [#call-signature]

```ts
count(): CountAllFunctionBuilder;
```

Builds a Salesforce `COUNT` aggregate expression.

##### Returns [#returns-15]

[`CountAllFunctionBuilder`](/docs/core/reference/api/interfaces/CountAllFunctionBuilder)

#### Call Signature [#call-signature-1]

```ts
count<Reference>(field): AggregateFunctionBuilder<number, number, NumericAggregateOperator>;
```

Builds a Salesforce `COUNT` aggregate expression.

##### Type Parameters [#type-parameters-16]

| Type Parameter                 |
| ------------------------------ |
| `Reference` *extends* `string` |

##### Parameters [#parameters-15]

| Parameter | Type                                                                                                                                     |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `field`   | `Reference` & [`AggregatableFieldReference`](/docs/core/reference/api/type-aliases/AggregatableFieldReference)\<`DB`, `TB`, `Reference`> |

##### Returns [#returns-16]

[`AggregateFunctionBuilder`](/docs/core/reference/api/interfaces/AggregateFunctionBuilder)\<`number`, `number`, `NumericAggregateOperator`>

***

<a id="api-countdistinct" />

### countDistinct() [#countdistinct]

```ts
countDistinct<Reference>(field): AggregateFunctionBuilder<number, number, NumericAggregateOperator>;
```

Builds a Salesforce `COUNT_DISTINCT(...)` expression.

#### Type Parameters [#type-parameters-17]

| Type Parameter                 |
| ------------------------------ |
| `Reference` *extends* `string` |

#### Parameters [#parameters-16]

| Parameter | Type                                                                                                                                     |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `field`   | `Reference` & [`AggregatableFieldReference`](/docs/core/reference/api/type-aliases/AggregatableFieldReference)\<`DB`, `TB`, `Reference`> |

#### Returns [#returns-17]

[`AggregateFunctionBuilder`](/docs/core/reference/api/interfaces/AggregateFunctionBuilder)\<`number`, `number`, `NumericAggregateOperator`>

***

<a id="api-avg" />

### avg() [#avg]

```ts
avg<Reference>(field): AggregateFunctionBuilder<number | null, number | null, NumericAggregateOperator>;
```

Builds a Salesforce `AVG(...)` aggregate expression.

#### Type Parameters [#type-parameters-18]

| Type Parameter                 |
| ------------------------------ |
| `Reference` *extends* `string` |

#### Parameters [#parameters-17]

| Parameter | Type                                                                                                                                                   |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `field`   | `Reference` & [`NumericAggregatableFieldReference`](/docs/core/reference/api/type-aliases/NumericAggregatableFieldReference)\<`DB`, `TB`, `Reference`> |

#### Returns [#returns-18]

[`AggregateFunctionBuilder`](/docs/core/reference/api/interfaces/AggregateFunctionBuilder)\<`number` | `null`, `number` | `null`, `NumericAggregateOperator`>

***

<a id="api-max" />

### max() [#max]

```ts
max<Reference>(field): AggregateFunctionBuilder<AggregateFieldValue<DB, TB, Reference>, SalesforceFieldFilterValue<FieldReferenceDefinition<DB, TB, Reference, readonly []>>, ComparisonOperatorExpression<DB, TB, Reference>>;
```

Builds a Salesforce `MAX(...)` aggregate expression.

#### Type Parameters [#type-parameters-19]

| Type Parameter                 |
| ------------------------------ |
| `Reference` *extends* `string` |

#### Parameters [#parameters-18]

| Parameter | Type                                                                                                                                     |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `field`   | `Reference` & [`AggregatableFieldReference`](/docs/core/reference/api/type-aliases/AggregatableFieldReference)\<`DB`, `TB`, `Reference`> |

#### Returns [#returns-19]

[`AggregateFunctionBuilder`](/docs/core/reference/api/interfaces/AggregateFunctionBuilder)\<`AggregateFieldValue`\<`DB`, `TB`, `Reference`>, [`SalesforceFieldFilterValue`](/docs/core/reference/api/type-aliases/SalesforceFieldFilterValue)\<`FieldReferenceDefinition`\<`DB`, `TB`, `Reference`, readonly \[]>>, `ComparisonOperatorExpression`\<`DB`, `TB`, `Reference`>>

***

<a id="api-min" />

### min() [#min]

```ts
min<Reference>(field): AggregateFunctionBuilder<AggregateFieldValue<DB, TB, Reference>, SalesforceFieldFilterValue<FieldReferenceDefinition<DB, TB, Reference, readonly []>>, ComparisonOperatorExpression<DB, TB, Reference>>;
```

Builds a Salesforce `MIN(...)` aggregate expression.

#### Type Parameters [#type-parameters-20]

| Type Parameter                 |
| ------------------------------ |
| `Reference` *extends* `string` |

#### Parameters [#parameters-19]

| Parameter | Type                                                                                                                                     |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `field`   | `Reference` & [`AggregatableFieldReference`](/docs/core/reference/api/type-aliases/AggregatableFieldReference)\<`DB`, `TB`, `Reference`> |

#### Returns [#returns-20]

[`AggregateFunctionBuilder`](/docs/core/reference/api/interfaces/AggregateFunctionBuilder)\<`AggregateFieldValue`\<`DB`, `TB`, `Reference`>, [`SalesforceFieldFilterValue`](/docs/core/reference/api/type-aliases/SalesforceFieldFilterValue)\<`FieldReferenceDefinition`\<`DB`, `TB`, `Reference`, readonly \[]>>, `ComparisonOperatorExpression`\<`DB`, `TB`, `Reference`>>

***

<a id="api-sum" />

### sum() [#sum]

```ts
sum<Reference>(field): AggregateFunctionBuilder<number | null, number | null, NumericAggregateOperator>;
```

Builds a Salesforce `SUM(...)` aggregate expression.

#### Type Parameters [#type-parameters-21]

| Type Parameter                 |
| ------------------------------ |
| `Reference` *extends* `string` |

#### Parameters [#parameters-20]

| Parameter | Type                                                                                                                                                   |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `field`   | `Reference` & [`NumericAggregatableFieldReference`](/docs/core/reference/api/type-aliases/NumericAggregatableFieldReference)\<`DB`, `TB`, `Reference`> |

#### Returns [#returns-21]

[`AggregateFunctionBuilder`](/docs/core/reference/api/interfaces/AggregateFunctionBuilder)\<`number` | `null`, `number` | `null`, `NumericAggregateOperator`>
