実行中の合計に関するこの質問の複製がほぼありますが、実行中のパーセンテージを計算するには回答を拡張する必要があります。リンクされた質問の回答を読むことをお勧めします (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% を簡単に取得できます。