テーブルをクエリし、他の 2 つの列のペアごとの組み合わせについて、列の値の実行中の合計を計算しようとしています。
具体的には、次の表を参照してください。
CREATE TABLE test (
bucket int(10) NOT NULL,
label varchar(10) NOT NULL,
amount int(10) NOT NULL
);
INSERT INTO test VALUES
(1, "A", 1),
(1, "B", 2),
(1, "C", 3),
(2, "A", 4),
(2, "B", 5),
(2, "C", 6),
(3, "A", 7),
(3, "B", 8),
(3, "C", 9),
(4, "A", 10),
(4, "B", 11),
(4, "C", 12);
各バケット/ラベルのペアの累積合計を計算する列をクエリしたいと考えています。
別の言い方をすれば、バケット、ラベル、およびその行のラベルと一致するラベルを持つすべてのエントリの「金額」列の累積合計である 3 番目の列を選択するクエリを記述できるようにしたいと考えています。たとえば、上記の例では、3 番目の列に次の値が必要です。
1,
2,
3,
5,
7,
9,
12,
15,
18,
22,
26,
30
つまり、値 5 は 1 と 4 (「A」ラベルの最初の 2 つの量) の合計であり、値 7 は 2 と 5 (「B」ラベルの最初の 2 つの量) の合計です。等
次のようなことを行うことで、列全体の累積合計を取得できることがわかっています。
SELECT
*,
SUM(amount) OVER (
ORDER BY amount
) AS running_total
FROM test
しかし、ラベルごとに分割する方法がわかりません。
どんな助けでも大歓迎です!