Skip to content

PostgreSQL SELECT API

PostgreSQL SELECT features including window functions, CTEs, LATERAL joins and RETURNING.

1 class · 4 methods

SELECT

4 methods

Advanced SELECT constructs supported by PostgreSQL.

SELECT col, agg() OVER (PARTITION BY ... ORDER BY ...) FROM tbl

Computes a value over a sliding window of rows related to the current row, without collapsing rows.

Parameters

NameTypeDescription
PARTITION BYcolumn-listDivides rows into partitions for the window.
ORDER BYcolumn-listOrdering inside each partition.

Returns

ResultSet

Example

postgresql
SELECT user_id, created_at,
  ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at) AS rn
FROM events;
WITH name AS (SELECT ...) SELECT ... FROM name

Common Table Expression (CTE) that names a subquery and references it in the outer SELECT.

Parameters

NameTypeDescription
nameidentifierCTE name.

Returns

ResultSet

Example

postgresql
WITH active AS (
  SELECT id FROM users WHERE active
)
SELECT o.* FROM orders o JOIN active a ON a.id = o.user_id;
SELECT ... FROM a, LATERAL (SELECT ... WHERE a.id = ref) b

LATERAL join allows a subquery in the FROM clause to reference columns of preceding FROM items.

Parameters

NameTypeDescription
LATERALkeywordEnables cross-references to earlier FROM items.

Returns

ResultSet

Example

postgresql
SELECT u.id, latest.id AS last_order
FROM users u
LEFT JOIN LATERAL (
  SELECT id FROM orders WHERE user_id = u.id ORDER BY created_at DESC LIMIT 1
) latest ON true;
INSERT|UPDATE|DELETE ... RETURNING cols

Returns rows affected by an INSERT, UPDATE or DELETE, useful for reading generated keys and triggers.

Parameters

NameTypeDescription
colscolumn-listColumns to return; * returns all.

Returns

ResultSet

Example

postgresql
INSERT INTO users (email) VALUES ('[email protected]')
RETURNING id, created_at;