# list_reduce — DuckDB 1.3.2

Returns a single value that is the result of applying the lambda function to each element of the input list, starting with the first element and then repeatedly applying the lambda function to the result of the previous application and the next element of the list. When an initial value is provided, it is used as the first argument to the lambda function

- Reference: /products/haybarn/functions/releases/duckdb-1.3.2/list_reduce/
- JSON: /products/haybarn/functions/api/v1/duckdb-1.3.2/functions/list_reduce.json
- Snapshot ID: duckdb-1.3.2
- Engine: duckdb v1.3.2
- Source ID: 0b83e5d2f6
- Binary SHA-256: 9a2ae2a4d5dbd07a5b0cb30c502d65014825d34924c681eb3faa7647e7cd2b6f
- Captured: 2026-09-05T18:37:33.818Z
- Source: https://github.com/duckdb/duckdb/releases/tag/v1.3.2
- Loaded extensions: autocomplete, core_functions, icu, json, parquet, shell

## Interpretation

- Choose a snapshot matching the target engine and build. The default is captured from the published Haybarn WASM package used by the browser playground. Historical native snapshots are also available.
- Availability is an observation in the recorded build and extension profile, not a guarantee of support in every installation or in WASM.
- Types and descriptions are declarations from duckdb_functions(). Binding can specialize result types. Null means not supplied by the catalog; do not invent defaults, optionality, argument mode, or table output columns.
- Raw parameter arrays preserve catalog order for scalar/aggregate/macro functions. Raw table arguments are alphabetical. Use callingConvention for engine-confirmed positional order and named arguments; null modes are unrecorded. Named does not mean optional. Macro defaults and special named variadic behavior are not supplied by duckdb_functions().
- Catalog examples are source material and may require data or extensions. runnableExamples contains separately verified SQL for the pinned WASM package; sample-data adaptations and guide examples are labeled separately.
- Guide annotations and recipes are separate editorial content. The browser runner always uses Haybarn WASM 1.5.5-rc3, independently of the documentation snapshot.
- All URLs beginning with / are relative to the origin hosting this document. Exports require no JavaScript, cookies, API key, or browser engine.

## Overloads

### overload-0b85443aee964b13

Kind: scalar. Parameter order: catalog-order.

```text
list_reduce(list: ANY[], lambda[: LAMBDA) → ANY
```

Link: /products/haybarn/functions/releases/duckdb-1.3.2/list_reduce/#overload-0b85443aee964b13

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| list | ANY[] | not recorded |
| lambda[ | LAMBDA | not recorded |

Declared return type: ANY. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.

### overload-e2536a68ab534b8f

Kind: scalar. Parameter order: catalog-order.

```text
list_reduce(list: ANY[], lambda[: LAMBDA, initial]: ANY) → ANY
```

Link: /products/haybarn/functions/releases/duckdb-1.3.2/list_reduce/#overload-e2536a68ab534b8f

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| list | ANY[] | not recorded |
| lambda[ | LAMBDA | not recorded |
| initial] | ANY | not recorded |

Declared return type: ANY. Variadic argument type: none declared.
Stability: CONSISTENT. Declared side effects: false.


## Guide recipes

No guide recipes.

## Engine catalog examples

Source examples may require additional data or extensions. Expressions are wrapped in SELECT; execution verification is not recorded.

Reported for: overload-0b85443aee964b13, overload-e2536a68ab534b8f

```sql
SELECT list_reduce([1, 2, 3], (x, y) -> x + y);
```

## Runnable examples

Executed successfully in Haybarn WASM 1.5.5-rc3. Sample data and guide examples are separate from the original catalog.

```sql
SELECT list_reduce([1, 2, 3], lambda x, y : x + y);
```

## Additional DuckDB documentation

- [Lambda Functions](https://duckdb.org/docs/current/sql/functions/lambda#list_reducelist-lambdaxy-initial_value)
- [List Functions](https://duckdb.org/docs/current/sql/functions/list#list_reducelist-lambdaxy-initial_value)

## In other engines

### Snowflake: bitmap_construct_agg()

Uses list_reduce as part of a larger rewrite.

Snowflake:

```sql
SELECT BITMAP_CONSTRUCT_AGG(v) FROM t
```

Haybarn / DuckDB:

```sql
SELECT (SELECT CASE WHEN l IS NULL OR LENGTH(l) = 0 THEN NULL WHEN LENGTH(l) <> LENGTH(LIST_FILTER(l, __v -> __v BETWEEN 0 AND 32767)) THEN NULL WHEN LENGTH(l) < 5 THEN UNHEX(PRINTF('%04X', LENGTH(l)) || h || REPEAT('00', GREATEST(0, 4 - LENGTH(l)) * 2)) ELSE UNHEX('08000000000000000000' || h) END FROM (SELECT l, COALESCE(LIST_REDUCE(LIST_TRANSFORM(l, __x -> PRINTF('%02X%02X', CAST(__x AS INT) & 255, (CAST(__x AS INT) >> 8) & 255)), (__a, __b) -> __a || __b, ''), '') AS h FROM (SELECT LIST_SORT(LIST_DISTINCT(LIST(v) FILTER(WHERE NOT v IS NULL))) AS l))) FROM t
```

Translation from [SQLGlot](https://github.com/tobymao/sqlglot/blob/3086608e6fd4c41c02dfba47171608d2b193fce2/tests/dialects/test_snowflake.py#L118).

## Observed availability

| Snapshot | Observed | Overloads | JSON |
| --- | --- | --- | --- |
| haybarn-1.5.5-rc3 | present | 2 | [reference](/products/haybarn/functions/api/v1/haybarn-1.5.5-rc3/functions/list_reduce.json) |
| duckdb-1.5.5 | present | 2 | [reference](/products/haybarn/functions/api/v1/duckdb-1.5.5/functions/list_reduce.json) |
| duckdb-1.4.4 | present | 2 | [reference](/products/haybarn/functions/api/v1/duckdb-1.4.4/functions/list_reduce.json) |
| duckdb-1.3.2 | present | 2 | [reference](/products/haybarn/functions/api/v1/duckdb-1.3.2/functions/list_reduce.json) |

Engine catalog documentation is derived from MIT-licensed Haybarn and DuckDB. [Notices](/third-party-notices.txt).
