first_last_agg

first() and last() aggregate functions

Overview

PackageVersionCategoryLicenseLanguage
first_last_agg0.1.4FUNCPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
4710first_last_aggNoYesNoYesNoYes-
Relatedaggs_for_arrays aggs_for_vecs topn quantile lower_quantile count_distinct arraymath

Version

TypeRepoVersionPG VerPackageDeps
EXTMIXED0.1.41817161514first_last_agg-
RPMPIGSTY0.1.41817161514first_last_agg_$v-
DEBPGDG0.1.41817161514postgresql-$v-first-last-agg-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
PIGSTY 0.1.4
PIGSTY 0.1.4
PIGSTY 0.1.4
PIGSTY 0.1.4
PIGSTY 0.1.4
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64

Build

You can build the RPM packages for first_last_agg using pig build:

pig build pkg first_last_agg         # build RPM packages

Install

You can install first_last_agg directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install first_last_agg;          # Install for current active PG version
pig ext install -y first_last_agg -v 18  # PG 18
pig ext install -y first_last_agg -v 17  # PG 17
pig ext install -y first_last_agg -v 16  # PG 16
pig ext install -y first_last_agg -v 15  # PG 15
pig ext install -y first_last_agg -v 14  # PG 14
dnf install -y first_last_agg_18       # PG 18
dnf install -y first_last_agg_17       # PG 17
dnf install -y first_last_agg_16       # PG 16
dnf install -y first_last_agg_15       # PG 15
dnf install -y first_last_agg_14       # PG 14
apt install -y postgresql-18-first-last-agg   # PG 18
apt install -y postgresql-17-first-last-agg   # PG 17
apt install -y postgresql-16-first-last-agg   # PG 16
apt install -y postgresql-15-first-last-agg   # PG 15
apt install -y postgresql-14-first-last-agg   # PG 14

Create Extension:

CREATE EXTENSION first_last_agg;

Usage

first_last_agg: first and last aggregate functions for PostgreSQL

Provides first and last aggregate functions that return the first or last value in a group, operating on any element type.

CREATE EXTENSION first_last_agg;

Functions

FunctionDescription
first(anyelement)Return the first value in the group
last(anyelement)Return the last value in the group

Examples

-- Get the first and last values (use ORDER BY for deterministic results)
SELECT id, first(val ORDER BY ts), last(val ORDER BY ts)
FROM events
GROUP BY id;

-- Without ORDER BY, the ordering within groups is undefined
SELECT department, first(salary ORDER BY hire_date)
FROM employees
GROUP BY department;

Last Modified 2026-03-12: add pg extension catalog (95749bf)