sql >> Database teknologi >  >> RDS >> PostgreSQL

Beregning af procenter med GROUP BY-forespørgsel

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;

Eller

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

Jeg ville se, om en af ​​disse eller den anden giver en bedre forespørgselsplan med det passende værktøj til dit RDBMS.



  1. Opdateringer til PostgreSQL-testværktøjer med benchmark-arkiv

  2. Giv MySQL tabel- og kolonnetilladelser

  3. Eliminering af PostgreSQL Split-Brain i Multi-Cloud-databaser

  4. SQL-injektioner i ADOdb og generel hjemmesidesikkerhed