# list_reduce — DuckDB 1.5.5

Reduces all elements of the input `list` into a single scalar value by executing the `lambda` function on a running result and the next list element. The `lambda` function has an optional `initial_value` argument.

- Reference: /products/haybarn/functions/releases/duckdb-1.5.5/list_reduce/
- JSON: /products/haybarn/functions/api/v1/duckdb-1.5.5/functions/list_reduce.json
- Snapshot ID: duckdb-1.5.5
- Engine: duckdb v1.5.5
- Source ID: d8cdaa33fd
- Binary SHA-256: 8463eb26527b278109cfddffc4606e1019ebefcfe2eac75efc53c76ed8f282d5
- Captured: 2026-09-05T18:37:40.699Z
- Source: https://github.com/duckdb/duckdb/releases/tag/v1.5.5
- 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-f79b2c05d6b373c0

Kind: scalar. Parameter order: catalog-order.

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

Link: /products/haybarn/functions/releases/duckdb-1.5.5/list_reduce/#overload-f79b2c05d6b373c0

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| list | ANY[] | not recorded |
| lambda(x,y) | LAMBDA | not recorded |

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

### overload-0f5b33a774f87361

Kind: scalar. Parameter order: catalog-order.

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

Link: /products/haybarn/functions/releases/duckdb-1.5.5/list_reduce/#overload-0f5b33a774f87361

| Argument | Catalog type | Calling mode |
| --- | --- | --- |
| list | ANY[] | not recorded |
| lambda(x,y) | LAMBDA | not recorded |
| initial_value | 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-f79b2c05d6b373c0, overload-0f5b33a774f87361

```sql
SELECT list_reduce([1, 2, 3], lambda 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).
