我有一个名为transactions
的表有以下列
transaction_id
transaction_type --income/expense
transaction_amount
account
现在我想要一个累积频率列,它会给我transaction_type
我期待的结果有点像下面
type |amount|account |cumulative sum|
------------------------------------------
expense|100.0 |Personal| 100.0 |
expense|150.0 |Personal| 250.0 |
income |1000.0|Personal| 1000.0 |
income |1000.0|Personal| 2000.0 |
expense|100.0 |Personal| 350.0 |
费用有自己的累积金额和收入都有自己的。
如何做到这一点?
答案 0 :(得分:1)
获取累积总和的最简单方法是在从光标读取数据时在应用程序中手动计算它们。
SQL是一种面向集合的语言,因此在SQL中进行此计算效率很低。如果你真的想要这样做,你必须为每个条目总结所有先前匹配条目的数量。 (这需要有一些排序;应该有一个时间戳,但我假设这些ID是有序的。)
SELECT type,
amount,
account,
(SELECT SUM(amount)
FROM transactions AS t2
WHERE t2.type = transactions.type
AND t2.transaction_id <= transactions.transaction_id
) AS cumulative_sum
FROM transactions
ORDER BY transaction_id;