如何计算每个条目占总和的百分比?

MrD*_*Duk 0 sql amazon-redshift

我有一个表,按标题存储请求。我可以使用以下查询它:

SELECT lower(btrim(environment)) as environment,
       lower(btrim(title)) as title,
       SUM(count) as requests
       FROM api_data_analytics
         WHERE timestamp BETWEEN '2019-10-01 00:00:00.000000' AND '2019-11-01 00:00:00.000000'
           AND environment = 'production'
         GROUP BY 1, 2;
Run Code Online (Sandbox Code Playgroud)

这将产生:

env:        title:     requests:
production    a1       18194440913
production    b1       2425465014
production    c1       265733967
production    d1       92586792
production    e1       57150246
Run Code Online (Sandbox Code Playgroud)

我希望能够执行一个查询,该查询为我提供每个标题的总请求百分比,例如:

env:        title:     pct_total:
production    a1       85.0
production    b1       13.2
production    c1       1.4
production    d1       0.3
production    e1       0.1
Run Code Online (Sandbox Code Playgroud)

获取此数据的最简单方法是什么?

Gor*_*off 5

使用窗口功能:

SELECT lower(btrim(environment)) as environment,
       lower(btrim(title)) as title,
       SUM(count) as requests,
       SUM(count) * 100.0 / SUM(SUM(count)) OVER () as percent_total
FROM api_data_analytics
WHERE timestamp BETWEEN '2019-10-01 00:00:00.000000' AND '2019-11-01 00:00:00.000000' AND
     environment = 'production'
GROUP BY 1, 2;
Run Code Online (Sandbox Code Playgroud)