Calculating percentages with GROUP BY query

后端 未结 5 508
太阳男子
太阳男子 2020-12-05 06:28

I have a table with 3 columns which looks like this:

File    User     Rating (1-5)
------------------------------
00001    1        3
00002    1        4
000         


        
5条回答
  •  失恋的感觉
    2020-12-05 07:07

    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;
    

    Or

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

    I would see if one of these or the other yields a better query plan with the appropriate tool for your RDBMS.

提交回复
热议问题