# Aggregate across columns in each row

Shape / columns

A variant of [Add a calculated column](https://meridian.online/operations/add-a-calculated-column).

Combine the values of several columns within each row, such as their sum, mean or maximum, into a new column.

Page: <https://meridian.online/operations/add-a-calculated-column/aggregate-across-columns>

## Status

Runs as a SQL step.

arcform carries it as a `sql:` step today.

## The DuckDB step

sum, mean and maximum across the columns of each row

```sql
CREATE TEMP TABLE scores AS SELECT * FROM (VALUES
  (1, 10, 20, 30),
  (2,  5, NULL, 15),
  (3, NULL, NULL, NULL)
) t(id, q1, q2, q3);
CREATE TEMP TABLE result AS
SELECT id, list_sum([q1, q2, q3]) AS total, list_avg([q1, q2, q3]) AS mean, list_max([q1, q2, q3]) AS best FROM scores;
SELECT * FROM result ORDER BY id;
SELECT CASE WHEN ((SELECT map_from_entries(list((id, [total, mean, best]::DOUBLE[]) ORDER BY id)) FROM result WHERE id < 3) = MAP {1: [60.0, 20.0, 30.0], 2: [20.0, 10.0, 15.0]} AND (SELECT count(total) + count(mean) + count(best) FROM result WHERE id = 3) = 0) THEN 'as expected' ELSE error('the row sums, means and maxima were not 60, 20 and 30 then 20, 10 and 15 with nulls skipped') END AS verdict;
```

The statement builds its own data.

It needs nothing installed beyond DuckDB itself.

## What other tools call it

Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).

- KNIME Analytics Platform: [`Column Aggregator`](https://api.hub.knime.com/nodes/*wiIVn14C9BeYBHqr?details=full) (read 2026-09-27)
- Polars: [`DataFrame.fold`](https://docs.pola.rs/api/python/stable/reference/dataframe/computation.html) (read 2026-09-27)
- Polars: [`fold`](https://docs.pola.rs/api/python/stable/reference/expressions/functions.html) (read 2026-09-27)
- Polars: [`reduce`](https://docs.pola.rs/api/python/stable/reference/expressions/functions.html) (read 2026-09-27)
- RapidMiner Studio: [`Generate Aggregation`](https://docs.rapidminer.com/latest/studio/operators/blending/attributes/generation/generate_aggregation.html) (read 2026-09-27)
- RapidMiner Studio: [`Generate Aggregation (Advanced)`](https://docs.rapidminer.com/latest/studio/operators/extensions/Operator%20Toolbox/blending/generate_aggregation_advanced.html) (read 2026-09-27)
