Summary: in this tutorial, you will learn how to use the SQLite SUM
function to calculate the sum of all values.
Introduction to SQLite SUM function
The SUM
function is an aggregate function that returns the sum the non-NULL values or only the distinct values in a group.
The following expression illustrates the syntax of the SUM
function:
SUM([ALL | DISTINCT] expression);
Code language: SQL (Structured Query Language) (sql)
The SUM
function uses ALL
clause by default. It means that all the input values, whether duplicate or not, are considered when the SUM
function performs the calculation.
If you want to calculate the sum of unique values, you have to specify the DISTINCT
clause explicitly in the expression.
The result of the SUM
function is an integer if all input non-NULL values are integers. If any input value is neither an integer nor a NULL
value, the result of the SUM
function is a floating-point value.
The result of the SUM
function is NULL
if and only if all input values are NULL
.
In case there is an integer overflow error happens and all input values are NULL
or integers, the SUM
function throws an integer overflow exception.
SQLite SUM function examples
We will use the tracks
table in the sample database for the demonstration.
To get the total length of all tracks in the tracks
table, you use the SUM
function as the following statement:
SELECT
SUM(milliseconds)
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
SQLite SUM function with GROUP BY clause
To calculate the total length of each album, you need to use the SUM
function with the GROUP BY
clause.
First, the GROUP BY
clause groups a set of tracks by albums. Then, the SUM
function calculates the sum of lengths of tracks per album.
The following statement illustrates the idea:
SELECT
AlbumId,
SUM(milliseconds)
FROM
tracks
GROUP BY
AlbumId;
Code language: SQL (Structured Query Language) (sql)
SQLite SUM function and INNER JOIN clause example
To include the album titles in the output, you join the tracks
table to the albums
table using the INNER JOIN
clause as follows:
SELECT
tracks.albumid,
title,
SUM(milliseconds)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid,
title;
Code language: SQL (Structured Query Language) (sql)
SQLite SUM function and HAVING clause example
You can use the SUM
function in the HAVING
clause to filter groups based on a specified condition.
For example, the following statement gets all albums whose total lengths are greater than 1,000,000 milliseconds:
SELECT
tracks.albumid AlbumId,
Title,
SUM(milliseconds)
FROM
tracks
INNER JOIN albums ON albums.albumid= tracks.albumid
GROUP BY
tracks.albumid,
title
HAVING
SUM(milliseconds) > 1000000;
Code language: SQL (Structured Query Language) (sql)
In this tutorial, we have introduced you to the SQLite SUM
function that returns the sum of values in a group.