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

Tính toán tỷ lệ phần trăm với truy vấn GROUP BY

WITH t1 AS 
 (SELECT User, Rating, Count(*) AS n 
  FROM your_table
  GROUP BY User, Rating)
SELECT User, Rating, n, 
       (0.0+n)/(COUNT(*) OVER (PARTITION BY User)) -- no integer divide!
FROM t1;

Hoặc

SELECT User, Rating, Count(*) OVER w_user_rating AS n, 
        (0.0+Count(*) OVER w_user_rating)/(Count(*) OVER (PARTITION BY User)) AS pct
FROM your_table
WINDOW w_user_rating AS (PARTITION BY User, Rating);

Tôi sẽ xem liệu một trong những cái này hay cái kia mang lại kế hoạch truy vấn tốt hơn với công cụ thích hợp cho RDBMS của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tối ưu hóa phạm vi truy vấn dấu thời gian Postgres

  2. Tắt cảnh báo trong sqlalchemy

  3. Tạo và xóa cơ sở dữ liệu PostgreSQL trên Ubuntu 16.04

  4. Làm thế nào để cung cấp một ứng dụng khách API với 1.000.000 kết quả cơ sở dữ liệu?

  5. Hiệu suất TPC-H kể từ PostgreSQL 8.3