Как рассчитать процент от общей суммы на каждую запись? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть таблица, в которой хранятся запросы на заголовок. Я могу запросить его с помощью следующего:

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;

Это приводит к:

env:        title:     requests:
production    a1       18194440913
production    b1       2425465014
production    c1       265733967
production    d1       92586792
production    e1       57150246

Я хотел бы иметь возможность выполнить запрос, который дает мне% от общего числа запросов накаждый заголовок, что-то вроде:

env:        title:     pct_total:
production    a1       85.0
production    b1       13.2
production    c1       1.4
production    d1       0.3
production    e1       0.1

Какой самый простой способ получить эти данные?

1 Ответ

5 голосов
/ 25 октября 2019

Использовать оконные функции:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...