# SUM

> Función de agregación SUM en StackQL: el total de los valores distintos de NULL de una columna o agrupación, devuelto como entero cuando todas las entradas son enteros.

Source: https://stackql.io/es/language-spec/functions/aggregate/sum

Devuelve la suma de todos los valores distintos de `NULL` de una columna o agrupación de columnas.  

Consulte también:  
[[` SELECT `]](/language-spec/select) [[` TOTAL `]](/language-spec/functions/aggregate/total)

* * * 

:::tip

Use la función [**TOTAL**](/language-spec/functions/aggregate/total) para sumar números de punto flotante o valores largos.

:::

## Sintaxis

```sql
SELECT SUM(columnExpression) FROM <multipartIdentifier>
[ GROUP BY groupByColumn ];
```

## Argumentos

__*columnExpression*__  
Una columna o expresión.

> Si todos los valores de *columnExpression* son `NULL`, `SUM` devuelve `NULL`.  

> `SUM` genera una excepción "integer overflow" si se produce un desbordamiento de enteros en algún momento del cálculo.  La función [`TOTAL`]](/language-spec/functions/aggregate/total) nunca genera un desbordamiento de enteros.  

__*groupByColumn*__  
Una o varias columnas sobre las que se realizan operaciones de resumen o de agregación.  La cláusula `GROUP BY` devuelve una fila por cada agrupación de columnas.

## Valor(es) devuelto(s)

Devuelve un entero que representa la suma de *columnExpression* si todas las entradas distintas de `NULL` son enteros. Si alguna entrada no es un entero o es `NULL`, se devuelve un valor de punto flotante que puede ser una aproximación de la suma real.

* * *

## Ejemplos

### Devolver la suma de una expresión de columna en todo un recurso

```sql
SELECT sum(json_array_length(disks)) as sum_disks
FROM google.compute.instances 
WHERE project = 'stackql-demo' 
AND zone = 'australia-southeast1-a';
```

### Devolver la suma de una expresión de columna agrupada por otra expresión de columna

```sql
SELECT tags, sum(json_array_length(disks)) as sum_disks
FROM google.compute.instances 
WHERE project = 'stackql-demo' 
AND zone = 'australia-southeast1-a'
GROUP BY json_extract(tags, '$.instanceType');
```

### Usar `SUM` como función de ventana para calcular totales acumulados

```sql
-- Calculate running total and percentage of contributions
SELECT
    login,
    contributions,
    SUM(contributions) OVER (ORDER BY contributions DESC) as running_total,
    SUM(contributions) OVER () as total_contributions,
    ROUND(100.0 * contributions / SUM(contributions) OVER (), 2) as pct_of_total
FROM github.repos.contributors
WHERE owner = 'stackql'
  AND repo = 'stackql';
```

Para obtener más información, consulte [https://www.sqlite.org/lang_aggfunc.html#sumunc](https://www.sqlite.org/lang_aggfunc.html#sumunc).
