PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Số lượng SQL có điều kiện

Trong Postgres 9.4 trở lên, hãy sử dụng FILTER tổng hợp lựa chọn. Điển hình là sạch nhất và nhanh nhất:

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;

Chi tiết cho FILTER mệnh đề:

  • Tổng hợp các cột với các bộ lọc bổ sung (riêng biệt)

Nếu bạn muốn nó ngắn :

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;

Các biến thể cú pháp khác:

  • Để có hiệu suất tuyệt đối, SUM nhanh hơn hay COUNT?

Truy vấn bảng chéo thích hợp

crosstab() mang lại hiệu suất tốt nhất và ngắn hơn đối với danh sách dài các tùy chọn:

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

Giải thích chi tiết:

  • Truy vấn bảng chéo PostgreSQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql:Thực thi psql kịch bản với mật khẩu

  2. Dữ liệu mới không tồn tại trong cột mảng Rails trên Postgres

  3. Hướng dẫn về Pgpool cho PostgreSQL:Phần thứ hai

  4. Làm cách nào để đếm ngày Chủ nhật của tháng hiện tại bằng psql?

  5. Ràng buộc kiểm tra PostgreSQL cho điều kiện khóa ngoại