Postgresql
需要單獨的列來計算百分比
我有下表:
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 %