Postgresql

需要單獨的列來計算百分比

  • August 30, 2014

我有下表:

NAME
Alex
Bob 
Bob
Tim
Alex
Roger

我需要製作以下內容:

Name    Count Percentage
Alex    2     33%
Bob     2     33%
Roger   1     16.6%
Tim     1     16.6%

我不知道從哪裡開始。我可以對計數進行初始查詢,這很簡單。

可以用一個SELECT

SELECT name, count(*), to_char((count(*) * 100.0
                         / sum(count(*)) OVER ()), 'FM990.00" %"') AS percent
FROM   t
GROUP  BY 1
ORDER  BY 1;

count(*) 是函式的單獨形式,count(<expression>). 假設所有列都是NOT NULL,否則您可能必須使用後者。

您可以執行視窗聚合函式sum(count(*)) OVER ()以獲取相同的總數SELECT。考慮 a 中的事件序列SELECT

這使用一次順序掃描而不是兩次,並且通常比使用子查詢的總計數快兩倍。

to_char()美化輸出:

name  count  percent
-----------------------
Alex  2      33.33 %
Bob   2      33.33 %
Roger 1      16.67 %
Tim   1      16.67 %

引用自:https://dba.stackexchange.com/questions/75345