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

Làm thế nào để thực hiện phần trăm / tổng số trong SQL?

MySQL:

SELECT ROUND(
  100.0 * (
      SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

Chỉnh sửa

Tôi đoán sẽ hữu ích nếu tôi nhận thấy postgres nhãn. Tôi nghĩ đó là một câu hỏi MySQL.

PostgreSQL:

SELECT ROUND(
  100.0 * (
      SUM(CASE WHEN cust_id = 541 THEN 1 ELSE 0 END)::numeric / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

P.S. PostgreSQL của tôi bị gỉ, vì vậy nếu truy vấn MySQL hoạt động trên PostgreSQL thì tôi muốn biết :)

Chỉnh sửa 2

Tôi không thể đủ căng thẳng để cảnh giác với đề xuất đếm (*) bên dưới. Bạn thường muốn tránh điều này với 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. Khóa chính tổng hợp PostgreSQL và gia số nối tiếp?

  2. Truy vấn SQL sử dụng mệnh đề WHERE IN

  3. Chèn dữ liệu Phân tích từ Spark vào Postgres

  4. Làm cách nào để tạo kết quả của các truy vấn SQL với LIMIT khác nhau trong mỗi truy vấn?

  5. Dấu thời gian jOOQ được lưu trữ với độ lệch múi giờ cục bộ