相関クエリの使用:
SELECT t.id,
t.count,
(SELECT SUM(x.count)
FROM TABLE x
WHERE x.id <= t.id) AS cumulative_sum
FROM TABLE t
ORDER BY t.id
MySQL変数の使用:
SELECT t.id,
t.count,
@running_total := @running_total + t.count AS cumulative_sum
FROM TABLE t
JOIN (SELECT @running_total := 0) r
ORDER BY t.id
注:
-
JOIN (SELECT @running_total := 0) r
は相互結合であり、個別のSET
を必要とせずに変数宣言を可能にします 指図。 - テーブルエイリアス
r
、サブクエリ/派生テーブル/インラインビューにはMySQLが必要です
警告:
- MySQL固有。他のデータベースに移植できない
-
ORDER BY
は重要;これにより、順序がOPと一致し、より複雑な変数の使用に大きな影響を与える可能性があります(つまり、MySQLにないpsuedo ROW_NUMBER / RANK機能)