sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL - gör att första raden visas som totalt antal andra rader

Detta är nu möjligt i version 9.5 av Postgres :

PostgreSQL 9.5-schema

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);

Fråga

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

Resultat

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

Denna ROLLUP motsvarar att använda ett uttryck med GROUPING SETS :

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

Varje underlista i GROUPING SETS tolkas på samma sätt som om det vore direkt i GROUP BY-satsen.



  1. Hur får man tillgängliga värden för SET-fältet?

  2. Kan du replikera en specifik databas eller tabell med Amazons RDS

  3. Hur gör man samma aggregering på varje kolumn, utan att lista kolumnerna?

  4. Hur använder man Springs JdbcTemplate för att ansluta till en enkel MySql-databas?