sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL - zobrazení prvního řádku jako součet ostatních řádků

To je nyní možné ve verzi 9.5 Postgres :

Schéma PostgreSQL 9.5

CREATE TABLE basket(fruits text, a integer, b integer, c integer);
CREATE TABLE
INSERT INTO basket(fruits, a, b, c) values('apples', 1, 1, 1),
                                      ('apples', 0, 1, 2),
                                      ('bananas', 1, 1, 2),
                                      ('oranges', 1, 1, 1);

Dotaz

SELECT coalesce(fruits,'total'), sum(a) a, sum(b) b, sum(c) c
FROM basket
GROUP BY ROLLUP((fruits))

Výsledky

 fruits  | a | b | c
---------+---+---+---
 apples  | 1 | 2 | 3
 bananas | 1 | 1 | 2
 oranges | 1 | 1 | 1
 total   | 3 | 4 | 6

Tento ROLLUP je ekvivalentní použití výrazů s GROUPING SETS :

SELECT fruits, sum(a) a, sum(b) b, sum(c) c
FROM basket
GROUP BY GROUPING SETS (fruits, ())

Každý dílčí seznam v GROUPING SETS je interpretován stejným způsobem, jako by byl přímo v klauzuli GROUP BY.



  1. Trace Flag 2389 a nový odhad kardinality

  2. Proč PostgreSQL (9.1) nepoužívá index pro jednoduchý výběr rovnosti?

  3. více VLOŽENÍ a zachování zabezpečení připraveného výpisu CHOP

  4. Jak ovladače JDBC zpracovávají typy dat?