Skip to content

Pre-release documentation

This describes Beacon 2.1.0-rc1, a release candidate. Behavior documented here may still change before the release ships, and some of it is not in any released build yet. For the current stable release, see the 2.0.2 documentation.

GROUP BY ​

GROUP BY aggregates the rows into groups:

sql
SELECT
    DATE_TRUNC('month', time) AS month,
    AVG(temperature)          AS avg_temp,
    MIN(temperature)          AS min_temp,
    MAX(temperature)          AS max_temp,
    COUNT(*)                  AS observations
FROM ocean_profiles
WHERE depth < 10
GROUP BY DATE_TRUNC('month', time)
ORDER BY month

Group by several columns ​

sql
SELECT
    DATE_TRUNC('year', time) AS year,
    FLOOR(latitude / 10) * 10 AS lat_band,
    AVG(temperature) AS avg_temp
FROM ocean_profiles
GROUP BY year, lat_band
ORDER BY year, lat_band

HAVING ​

HAVING filters the groups after the aggregation. WHERE filters the rows before it:

sql
SELECT
    FLOOR(latitude / 5) * 5 AS lat_bin,
    AVG(temperature)        AS avg_temp,
    COUNT(*)                AS observations
FROM ocean_profiles
GROUP BY lat_bin
HAVING COUNT(*) > 100
ORDER BY lat_bin

Common aggregate functions ​

FunctionDescription
COUNT(*)The number of rows in the group
COUNT(col)The number of non-null values in the group
SUM(col)The sum
AVG(col)The mean
MIN(col)The minimum
MAX(col)The maximum
STDDEV(col)The standard deviation
MEDIAN(col)The median

See Function Reference for the full list.

Released under the AGPL-3.0 License.