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

Liczba warunkowych zapytań SQL

W Postgresie 9.4 lub nowszym użyj agregatu FILTER opcja. Zazwyczaj najczystszy i najszybszy:

SELECT category
     , count(*) FILTER (WHERE question1 = 0) AS zero
     , count(*) FILTER (WHERE question1 = 1) AS one
     , count(*) FILTER (WHERE question1 = 2) AS two
FROM   reviews
GROUP  BY 1;

Szczegóły dotyczące FILTER klauzula:

  • Agregacja kolumn z dodatkowymi (odrębnymi) filtrami

Jeśli chcesz to krótkie :

SELECT category
     , count(question1 = 0 OR NULL) AS zero
     , count(question1 = 1 OR NULL) AS one
     , count(question1 = 2 OR NULL) AS two
FROM   reviews
GROUP  BY 1;

Więcej wariantów składni:

  • Aby uzyskać bezwzględną wydajność, czy SUM jest szybszy czy COUNT?

Właściwe zapytanie krzyżowe

crosstab() zapewnia najlepszą wydajność i jest krótszy w przypadku długich list opcji:

SELECT * FROM crosstab(
     'SELECT category, question1, count(*) AS ct
      FROM   reviews
      GROUP  BY 1, 2
      ORDER  BY 1, 2'
   , 'VALUES (0), (1), (2)'
   ) AS ct (category text, zero int, one int, two int);

Szczegółowe wyjaśnienie:

  • Kwerendy PostgreSQL Crosstab


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć aktywnych użytkowników z bazą danych postgreSQL przez SQL?

  2. Wyodrębnij rok z daty w PostgreSQL

  3. Wydajność aplikacji opartych na PostgreSQL:opóźnienia i ukryte opóźnienia

  4. Postgres:Jak zrobić klucze kompozytowe?

  5. Jak tworzyć liczby porządkowe w PostgreSQL