sql - 如何计算每个条目占总和的百分比?
问题描述
我有一个存储每个标题请求的表。我可以通过以下方式查询它:
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
获取这些数据的最简单方法是什么?
解决方案
使用窗口函数:
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;
推荐阅读
- javascript - 如何向数据库中的所有用户发送网络推送?
- python - 以 Stripe 的方式实例化 Python 类
- python - 我知道 map 返回一个迭代器,但是我们如何将迭代器分配给 a 和 b?
- javascript - Javascript选择变量
- rust - Tokio 任务在完成前退出
- javascript - 有人可以向我解释这段代码吗?
- html - 完整尺寸的背景图像,但屏幕的第二半仍然是空的
- react-native - 网络请求与表单数据反应原生获取失败
- python - 显示 0.66 相关性的两个值,但图表完全不同
- java - Spring Security @PreAuthorize ByPass 用于特定角色