1

SQLで稼働率を計算するのを手伝ってくれる人はいますか? 次のデータがあるとします。

column 1   column 2
  1          500
  2          499
  3          200
  4           50
  5           10
  6            5

列 2 の何パーセントが 80% を占めているか知りたいです。この例では、列 2 の合計は です12664。最初の 3 行で 94% を占めます: (500+499+200)/sum(column 2) = 94%. これに続いて、3/6 = 行が合計で 80% になると結論付けます。

SQLでこれを行うにはどうすればよいですか?

4

1 に答える 1

4

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

于 2012-10-17T19:36:38.917 に答える