PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menghitung persentase dengan kueri 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;

Atau

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

Saya akan melihat apakah salah satu dari ini atau yang lain menghasilkan rencana kueri yang lebih baik dengan alat yang sesuai untuk RDBMS Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cara Mendaftar semua Pemicu di Database PostgreSQL

  2. Kueri untuk menghitung nilai yang berbeda dalam rentang tanggal bergulir

  3. Urutan tanpa celah PostgreSQL

  4. Kembalikan Jenis Tabel dari fungsi A di PostgreSQL

  5. PostgreSQL:Waktu pembuatan tabel