[英]Calculate percentage in SQL Oracle
我有以下数据,我试图找到每个 ID 在 ORACLE SQL 中工作日与周末的购买百分比
ID | 日 | 每天总计 |
---|---|---|
1 | 工作日 | 78 |
1 | 周末 | 20 |
2 | 工作日 | 13 |
2 | 周末 | 37 |
我期待的输出是:
ID | 日 | 每天百分比 |
---|---|---|
1 | 工作日 | 79 |
1 | 周末 | 20 |
2 | 工作日 | 26 |
2 | 周末 | 74 |
百分比由每个 ID 的(每天总计 / 总和(每天总计))计算得出。 最好的方法是什么。 感谢你的帮助!
使用SUM
作为解析函数:
SELECT id,
day,
100 * total_per_day / SUM(total_per_day) OVER (PARTITION BY id)
AS percentage
FROM table_name
其中,对于样本数据:
CREATE TABLE table_name (ID, DAY, total_per_day) AS
SELECT 1, 'weekday', 78 FROM DUAL UNION ALL
SELECT 1, 'weekend', 20 FROM DUAL UNION ALL
SELECT 2, 'weekday', 13 FROM DUAL UNION ALL
SELECT 2, 'weekend', 37 FROM DUAL;
输出:
ID 日 百分比 1 工作日 79.59183673469387755102040816326530612245 1 周末 20.40816326530612244897959183673469387755 2 工作日 26 2 周末 74
db<> 在这里摆弄
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.