topn

topn

topn : type for top-n JSONB

Overview

ID Extension Package Version Category License Language
4600
topn
topn
2.7.0
FUNC
AGPL-3.0
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d--
No
Yes
No
Yes
no
no
Relationships
See Also
count_distinct
quantile
lower_quantile
first_last_agg
omnisketch
ddsketch
aggs_for_arrays
aggs_for_vecs

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PGDG
2.7.0
18
17
16
15
14
topn -
RPM
PGDG
2.7.0
18
17
16
15
14
topn_$v -
DEB
PIGSTY
2.7.0
18
17
16
15
14
postgresql-$v-topn -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
el8.aarch64
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
el9.x86_64
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
el9.aarch64
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
el10.x86_64
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
el10.aarch64
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
PGDG 2.7.0
d12.x86_64
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
d12.aarch64
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
d13.x86_64
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
d13.aarch64
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
u22.x86_64
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
u22.aarch64
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
u24.x86_64
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
u24.aarch64
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
PIGSTY 2.7.0
Package Version OS ORG SIZE File URL
topn_18 2.7.0 el8.x86_64 pgdg 24.0 KiB topn_18-2.7.0-2PGDG.rhel8.x86_64.rpm
topn_18 2.7.0 el8.aarch64 pgdg 23.8 KiB topn_18-2.7.0-2PGDG.rhel8.aarch64.rpm
topn_18 2.7.0 el9.x86_64 pgdg 23.3 KiB topn_18-2.7.0-2PGDG.rhel9.x86_64.rpm
topn_18 2.7.0 el9.aarch64 pgdg 22.8 KiB topn_18-2.7.0-2PGDG.rhel9.aarch64.rpm
topn_18 2.7.0 el10.x86_64 pgdg 24.1 KiB topn_18-2.7.0-2PGDG.rhel10.x86_64.rpm
topn_18 2.7.0 el10.aarch64 pgdg 23.8 KiB topn_18-2.7.0-2PGDG.rhel10.aarch64.rpm
postgresql-18-topn 2.7.0 d12.x86_64 pigsty 28.4 KiB postgresql-18-topn_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-18-topn 2.7.0 d12.aarch64 pigsty 28.2 KiB postgresql-18-topn_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-18-topn 2.7.0 d13.x86_64 pigsty 28.6 KiB postgresql-18-topn_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-18-topn 2.7.0 d13.aarch64 pigsty 28.1 KiB postgresql-18-topn_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-18-topn 2.7.0 u22.x86_64 pigsty 29.6 KiB postgresql-18-topn_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-18-topn 2.7.0 u22.aarch64 pigsty 29.5 KiB postgresql-18-topn_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-18-topn 2.7.0 u24.x86_64 pigsty 29.1 KiB postgresql-18-topn_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-18-topn 2.7.0 u24.aarch64 pigsty 29.0 KiB postgresql-18-topn_2.7.0-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
topn_17 2.7.0 el8.x86_64 pgdg 24.0 KiB topn_17-2.7.0-1PGDG.rhel8.x86_64.rpm
topn_17 2.7.0 el8.aarch64 pgdg 23.8 KiB topn_17-2.7.0-1PGDG.rhel8.aarch64.rpm
topn_17 2.7.0 el9.x86_64 pgdg 23.4 KiB topn_17-2.7.0-1PGDG.rhel9.x86_64.rpm
topn_17 2.7.0 el9.aarch64 pgdg 23.0 KiB topn_17-2.7.0-1PGDG.rhel9.aarch64.rpm
topn_17 2.7.0 el10.x86_64 pgdg 24.1 KiB topn_17-2.7.0-2PGDG.rhel10.x86_64.rpm
topn_17 2.7.0 el10.aarch64 pgdg 23.7 KiB topn_17-2.7.0-2PGDG.rhel10.aarch64.rpm
postgresql-17-topn 2.7.0 d12.x86_64 pigsty 28.4 KiB postgresql-17-topn_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-17-topn 2.7.0 d12.aarch64 pigsty 28.3 KiB postgresql-17-topn_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-17-topn 2.7.0 d13.x86_64 pigsty 28.6 KiB postgresql-17-topn_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-17-topn 2.7.0 d13.aarch64 pigsty 28.2 KiB postgresql-17-topn_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-17-topn 2.7.0 u22.x86_64 pigsty 33.0 KiB postgresql-17-topn_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-17-topn 2.7.0 u22.aarch64 pigsty 32.8 KiB postgresql-17-topn_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-17-topn 2.7.0 u24.x86_64 pigsty 29.1 KiB postgresql-17-topn_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-17-topn 2.7.0 u24.aarch64 pigsty 29.0 KiB postgresql-17-topn_2.7.0-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
topn_16 2.7.0 el8.x86_64 pgdg 24.0 KiB topn_16-2.7.0-1PGDG.rhel8.x86_64.rpm
topn_16 2.6.0 el8.x86_64 pgdg 23.7 KiB topn_16-2.6.0-1PGDG.rhel8.x86_64.rpm
topn_16 2.7.0 el8.aarch64 pgdg 23.8 KiB topn_16-2.7.0-1PGDG.rhel8.aarch64.rpm
topn_16 2.6.0 el8.aarch64 pgdg 23.5 KiB topn_16-2.6.0-1PGDG.rhel8.aarch64.rpm
topn_16 2.7.0 el9.x86_64 pgdg 23.4 KiB topn_16-2.7.0-1PGDG.rhel9.x86_64.rpm
topn_16 2.6.0 el9.x86_64 pgdg 23.1 KiB topn_16-2.6.0-1PGDG.rhel9.x86_64.rpm
topn_16 2.7.0 el9.aarch64 pgdg 23.2 KiB topn_16-2.7.0-1PGDG.rhel9.aarch64.rpm
topn_16 2.6.0 el9.aarch64 pgdg 22.7 KiB topn_16-2.6.0-1PGDG.rhel9.aarch64.rpm
topn_16 2.7.0 el10.x86_64 pgdg 24.1 KiB topn_16-2.7.0-2PGDG.rhel10.x86_64.rpm
topn_16 2.7.0 el10.aarch64 pgdg 23.7 KiB topn_16-2.7.0-2PGDG.rhel10.aarch64.rpm
postgresql-16-topn 2.7.0 d12.x86_64 pigsty 28.4 KiB postgresql-16-topn_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-16-topn 2.7.0 d12.aarch64 pigsty 28.2 KiB postgresql-16-topn_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-16-topn 2.7.0 d13.x86_64 pigsty 28.5 KiB postgresql-16-topn_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-16-topn 2.7.0 d13.aarch64 pigsty 28.1 KiB postgresql-16-topn_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-16-topn 2.7.0 u22.x86_64 pigsty 32.8 KiB postgresql-16-topn_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-16-topn 2.7.0 u22.aarch64 pigsty 32.6 KiB postgresql-16-topn_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-16-topn 2.7.0 u24.x86_64 pigsty 29.1 KiB postgresql-16-topn_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-16-topn 2.7.0 u24.aarch64 pigsty 28.9 KiB postgresql-16-topn_2.7.0-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
topn_15 2.7.0 el8.x86_64 pgdg 24.0 KiB topn_15-2.7.0-1PGDG.rhel8.x86_64.rpm
topn_15 2.4.0 el8.x86_64 pgdg 24.1 KiB topn_15-2.4.0-2.rhel8.x86_64.rpm
topn_15 2.7.0 el8.aarch64 pgdg 23.8 KiB topn_15-2.7.0-1PGDG.rhel8.aarch64.rpm
topn_15 2.4.0 el8.aarch64 pgdg 23.9 KiB topn_15-2.4.0-2.rhel8.aarch64.rpm
topn_15 2.7.0 el9.x86_64 pgdg 23.4 KiB topn_15-2.7.0-1PGDG.rhel9.x86_64.rpm
topn_15 2.4.0 el9.x86_64 pgdg 24.0 KiB topn_15-2.4.0-2.rhel9.x86_64.rpm
topn_15 2.7.0 el9.aarch64 pgdg 23.0 KiB topn_15-2.7.0-1PGDG.rhel9.aarch64.rpm
topn_15 2.4.0 el9.aarch64 pgdg 23.5 KiB topn_15-2.4.0-2.rhel9.aarch64.rpm
topn_15 2.7.0 el10.x86_64 pgdg 24.3 KiB topn_15-2.7.0-2PGDG.rhel10.x86_64.rpm
topn_15 2.7.0 el10.aarch64 pgdg 23.7 KiB topn_15-2.7.0-2PGDG.rhel10.aarch64.rpm
postgresql-15-topn 2.7.0 d12.x86_64 pigsty 28.3 KiB postgresql-15-topn_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-15-topn 2.7.0 d12.aarch64 pigsty 28.1 KiB postgresql-15-topn_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-15-topn 2.7.0 d13.x86_64 pigsty 28.5 KiB postgresql-15-topn_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-15-topn 2.7.0 d13.aarch64 pigsty 28.1 KiB postgresql-15-topn_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-15-topn 2.7.0 u22.x86_64 pigsty 32.8 KiB postgresql-15-topn_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-15-topn 2.7.0 u22.aarch64 pigsty 32.6 KiB postgresql-15-topn_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-15-topn 2.7.0 u24.x86_64 pigsty 29.1 KiB postgresql-15-topn_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-15-topn 2.7.0 u24.aarch64 pigsty 28.8 KiB postgresql-15-topn_2.7.0-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
topn_14 2.7.0 el8.x86_64 pgdg 24.0 KiB topn_14-2.7.0-1PGDG.rhel8.x86_64.rpm
topn_14 2.4.0 el8.x86_64 pgdg 43.0 KiB topn_14-2.4.0-1.rhel8.x86_64.rpm
topn_14 2.7.0 el8.aarch64 pgdg 23.8 KiB topn_14-2.7.0-1PGDG.rhel8.aarch64.rpm
topn_14 2.4.0 el8.aarch64 pgdg 23.9 KiB topn_14-2.4.0-2.rhel8.aarch64.rpm
topn_14 2.7.0 el9.x86_64 pgdg 23.4 KiB topn_14-2.7.0-1PGDG.rhel9.x86_64.rpm
topn_14 2.7.0 el9.aarch64 pgdg 23.0 KiB topn_14-2.7.0-1PGDG.rhel9.aarch64.rpm
topn_14 2.4.0 el9.aarch64 pgdg 23.5 KiB topn_14-2.4.0-2.rhel9.aarch64.rpm
topn_14 2.7.0 el10.x86_64 pgdg 24.2 KiB topn_14-2.7.0-2PGDG.rhel10.x86_64.rpm
topn_14 2.7.0 el10.aarch64 pgdg 23.7 KiB topn_14-2.7.0-2PGDG.rhel10.aarch64.rpm
postgresql-14-topn 2.7.0 d12.x86_64 pigsty 28.3 KiB postgresql-14-topn_2.7.0-1PIGSTY~bookworm_amd64.deb
postgresql-14-topn 2.7.0 d12.aarch64 pigsty 28.2 KiB postgresql-14-topn_2.7.0-1PIGSTY~bookworm_arm64.deb
postgresql-14-topn 2.7.0 d13.x86_64 pigsty 28.5 KiB postgresql-14-topn_2.7.0-1PIGSTY~trixie_amd64.deb
postgresql-14-topn 2.7.0 d13.aarch64 pigsty 28.1 KiB postgresql-14-topn_2.7.0-1PIGSTY~trixie_arm64.deb
postgresql-14-topn 2.7.0 u22.x86_64 pigsty 32.8 KiB postgresql-14-topn_2.7.0-1PIGSTY~jammy_amd64.deb
postgresql-14-topn 2.7.0 u22.aarch64 pigsty 32.6 KiB postgresql-14-topn_2.7.0-1PIGSTY~jammy_arm64.deb
postgresql-14-topn 2.7.0 u24.x86_64 pigsty 29.1 KiB postgresql-14-topn_2.7.0-1PIGSTY~noble_amd64.deb
postgresql-14-topn 2.7.0 u24.aarch64 pigsty 28.8 KiB postgresql-14-topn_2.7.0-1PIGSTY~noble_arm64.deb

Source

pig build pkg topn;		# build deb

Install

Make sure PGDG repo available:

pig repo add pgdg -u    # add pgdg repo and update cache

Install this extension with pig:

pig install topn;		# install via package name, for the active PG version

pig install topn -v 18;   # install for PG 18
pig install topn -v 17;   # install for PG 17
pig install topn -v 16;   # install for PG 16
pig install topn -v 15;   # install for PG 15
pig install topn -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION topn;

Usage

topn: top-N values approximation for PostgreSQL

Provides approximate top-N value tracking using an approximation algorithm that keeps a predefined number of frequent items and counters. Supports materialization, incremental updates, and merging across time intervals.

CREATE EXTENSION topn;

Data Type

Uses JSONB to store the frequent items and their frequencies.

Aggregates

Function Description
topn_add_agg(text) Aggregate that creates a JSONB counter from a text column
topn_union_agg(jsonb) Aggregate that merges multiple JSONB counter lists

Functions

Function Description
topn(jsonb, n) Return the top-N elements and frequencies as rows
topn_add(jsonb, text) Add a text value to a JSONB counter
topn_union(jsonb, jsonb) Merge two JSONB counter lists

Configuration

  • topn.number_of_counters – number of counters to track (default: 1000)

Examples

-- Materialize top products by date
CREATE TABLE popular_products (
  review_date date UNIQUE,
  agg_data jsonb
);

INSERT INTO popular_products
SELECT review_date, topn_add_agg(product_id)
FROM customer_reviews GROUP BY review_date;

-- Get the top-1 product for each day
SELECT review_date, (topn(agg_data, 1)).*
FROM popular_products ORDER BY review_date;

-- Top 10 across a time range (merging daily summaries)
SELECT (topn(topn_union_agg(agg_data), 10)).*
FROM popular_products
WHERE review_date >= '2000-01-01' AND review_date < '2000-02-01'
ORDER BY 2 DESC;
Last updated on