PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL - прави първия ред да се показва като сбор от останалите редове

Това вече е възможно във версия 9.5 на Postgres :

Схема на 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);

Заявка

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

Резултати

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

Този ROLLUP е еквивалентно на използването на изрази с GROUPING SETS :

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

Всеки подсписък в GROUPING SETS се интерпретира по същия начин, сякаш е директно в клаузата GROUP BY.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:как закръгляте времевата марка нагоре или надолу до най-близката минута?

  2. strftime в sqlite конвертиране в postgres

  3. Как да конвертирате йерархични заявки на oracle в postgresql?

  4. Цел за време за възстановяване на Pgbackrest

  5. PostgreSQL 9.4:Агрегиране/съединяване на таблица на JSON ID на полето вътре в масива