PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL 9.3:Łącz dwie kolumny w jednej

Ładnie zoptymalizowany:

WITH t(a, b, ct) AS (
   SELECT columna, columnb, count(*)::int
   FROM   test_1
   GROUP  BY 1, 2
   )
, matrix AS (
   SELECT a.*, b.*, COALESCE(t.ct, 0) AS ct
   FROM        (SELECT DISTINCT ON (a) a, right(a, -1)::int AS sorta FROM t) a
   CROSS  JOIN (SELECT DISTINCT ON (b) b, right(b, -1)::int AS sortb FROM t) b
   LEFT   JOIN t USING (a, b)
   )
(   
SELECT a AS ab, array_agg('"' || b || '" = ' || ct ORDER BY sortb) AS x
FROM   matrix
GROUP  BY 1, sorta
ORDER  BY sorta
)
UNION ALL
(
SELECT b      , array_agg('"' || a || '" = ' || ct ORDER BY sorta)
FROM   matrix
GROUP  BY 1, sortb
ORDER  BY sortb
);

Skrzypce SQL.

Wszystkie nawiasy są wymagane.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL nie jest pusty zamiast nie NULL

  2. Najważniejsze zagrożenia bezpieczeństwa PostgreSQL

  3. Najczęstsze scenariusze awarii PostgreSQL

  4. postgresql - nie można utworzyć bazy danych - OperationalError:dostęp do szablonu źródłowej bazy danych1 mają inni użytkownicy

  5. Znajdź rodzica rekurencyjnie za pomocą Query