[英]Calculate running percentage in SQL
任何人都可以帮我计算SQL中的运行百分比吗? 假设我们有以下数据:
column 1 column 2
1 500
2 499
3 200
4 50
5 10
6 5
我想知道第2列的百分比占80%。 在示例中,第2列的总和是12664
。 前三行占94%:( (500+499+200)/sum(column 2) = 94%
。 在此之后,我将得出结论,3/6 =行使总数达到80%。
我如何在SQL中执行此操作?
您只需要在运行总计上重复此问题 ,但您必须扩展答案以计算运行百分比 。 我建议阅读链接问题的答案(注意MSSQL 2012有SUM...OVER
语法,欢呼!),因为它们比我下面的建议更深入。
对于你的情况,你可以做这样的事情来获得一个运行百分比:
DECLARE @table TABLE(col1 INT, col2 FLOAT);
INSERT INTO @table (col1, col2)
VALUES (1, 500), (2, 499), (3, 200), (4, 50), (5, 10), (6, 5)
DECLARE @col2total FLOAT = (SELECT SUM(col2) FROM @table)
-- Using subqueries
SELECT col1,
col2,
(SELECT SUM(col2) FROM @table sub WHERE sub.col1 <= base.col1)
/ @col2total
* 100 AS RunningPercentage
FROM @table base
ORDER BY col1
-- Using cross join
SELECT t1.col1,
t1.col2,
SUM (t2.col2) RunningTotal,
SUM (t2.col2) / @col2total * 100 RunningPercentage
FROM @table t1 CROSS JOIN @table t2
WHERE t1.col1 >= t2.col1
GROUP BY t1.col1, t1.col2
ORDER BY t1.col1
有了这个,你应该很容易以任何你想要的方式获得最高或最低80%。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.