SELECT * FROM (VALUES (1,'a'),(2,'b')) AS t(id, code);INSERT INTO t(id,code) VALUES (1,'a'),(2,'b');
2. Using TABLESAMPLE
SELECT * FROM big_fact TABLESAMPLE BERNOULLI (1);SELECT * FROM big_fact TABLESAMPLE SYSTEM (0.5) REPEATABLE (42);
Method
Granularity
BERNOULLI
Per row (truly random)
SYSTEM
Per page (fast, clumpy)
3. Using SELECT INTO
-- SQL: creates new tableSELECT id, name INTO new_customers FROM customers WHERE active;-- PL/pgSQL: assigns row(s) into variablesSELECT count(*) INTO n FROM orders;
4. Using Ordered-Set Aggregates
SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY total_cents) AS median, percentile_disc(ARRAY[0.5,0.9,0.99]) WITHIN GROUP (ORDER BY total_cents) AS pNN, mode() WITHIN GROUP (ORDER BY status) FROM orders;
5. Using Hypothetical-Set Aggregates
SELECT rank(10000) WITHIN GROUP (ORDER BY total_cents) FROM orders;SELECT dense_rank(10000) WITHIN GROUP (ORDER BY total_cents) FROM orders;
6. Creating Custom Aggregate Functions
CREATE FUNCTION sum_sfunc(state numeric, val numeric)RETURNS numeric LANGUAGE sql AS $ SELECT coalesce(state,0) + coalesce(val,0) $;CREATE AGGREGATE my_sum (numeric) ( SFUNC = sum_sfunc, STYPE = numeric, INITCOND = '0');SELECT my_sum(total_cents) FROM orders;
7. Using Range Types in Queries
SELECT * FROM reservations WHERE during && tstzrange('2025-03-01','2025-03-08');
8. Using Composite Types
CREATE TYPE addr AS (street text, city text, zip text);CREATE TABLE people (id int, home addr);INSERT INTO people VALUES (1, ROW('1 Main','SF','94107'));SELECT (home).city FROM people;
9. Using Dollar Quoting
CREATE FUNCTION f() RETURNS text AS $SELECT 'no need to escape '' or "';$ LANGUAGE sql;-- Nested: use distinct tagsDO $outer$ BEGIN PERFORM $body$select 1$body$; END;$outer$;
10. Using RETURNING with Data-Modifying CTEs
WITH ins AS ( INSERT INTO archive SELECT * FROM orders WHERE placed_at < '2024-01-01' RETURNING id)DELETE FROM orders WHERE id IN (SELECT id FROM ins);
11. Using LATERAL in FROM Clause
SELECT c.id, recent.* FROM customers c LEFT JOIN LATERAL ( SELECT * FROM orders o WHERE o.customer_id = c.id ORDER BY placed_at DESC LIMIT 3 ) recent ON true;
12. Using ROWS FROM
SELECT * FROM ROWS FROM( generate_series(1, 3), unnest(ARRAY['a','b','c'])) AS t(n, c);