使用 GROUP BY 计算列的百分比

Fab*_*ert 2 postgresql cte count window-functions group-by

考虑以下查询:

\n\n
SELECT\n  country\n  , count(id) AS "count"\nFROM\n  lead\nWHERE\n  date_part(\'year\', lead.since) = date_part(\'year\', CURRENT_DATE)\nGROUP BY "country"\nORDER BY "count" DESC\n;\n
Run Code Online (Sandbox Code Playgroud)\n\n

它返回类似以下内容:

\n\n
country count\nfr  3456\nus  569\nsc  248\n\xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何添加第三列以及占总计数的百分比?

\n

Aki*_*ina 5

SELECT country, 
       COUNT(id) "count",
       COUNT(id) / SUM(COUNT(id)) OVER () * 100 percent
FROM lead
WHERE date_part('year', lead.since) = date_part('year', CURRENT_DATE)
GROUP BY country
ORDER BY "count" DESC;
Run Code Online (Sandbox Code Playgroud)