AVG

Computes the average (arithmetic mean) of all non-NULL values in a group.

Syntax

AVG ( expression )

Parameters

AVG(expression)

Calculates the average of all non-NULL values of expression in the group. NULL values are ignored.

Returns

Returns a DOUBLE representing the average of all non-NULL values. If all values are NULL or the input set is empty, returns NULL.

Examples

Setup

For these examples, assume we have a sales table:

CREATE TABLE sales(
    id BIGINT,
    product STRING,
    region STRING,
    amount BIGINT,
    PRIMARY KEY(id))

INSERT INTO sales VALUES
    (1, 'Widget', 'North', 100),
    (2, 'Widget', 'South', 150),
    (3, 'Gadget', 'North', 200),
    (4, 'Gadget', 'South', NULL),
    (5, 'Widget', 'North', 120)

AVG - Average All Values

Calculate the average of all amounts in the table:

SELECT AVG(amount) AS average_amount FROM sales

average_amount

142.5

Notice that the NULL value in row 4 is ignored, so the average is 570 / 4 = 142.5.

AVG with GROUP BY

Calculate average amounts per product:

SELECT product, AVG(amount) AS average_amount
FROM sales
GROUP BY product

product

average_amount

"Widget"

123.33333333333333

"Gadget"

200.0

Calculate average amounts per region:

SELECT region, AVG(amount) AS average_amount
FROM sales
GROUP BY region

region

average_amount

"North"

140.0

"South"

150.0

The South region average only includes the non-NULL value (150), ignoring the NULL from the Gadget sale.

Important Notes

  • Index Requirement: GROUP BY queries require an appropriate index to execute. See Indexes for details on creating indexes that support GROUP BY operations.