【问题标题】:Using sql to fetch account balance for each owner使用 sql 获取每个所有者的帐户余额
【发布时间】:2022-01-29 16:27:21
【问题描述】:

我有一个所有者表

id | owner
--------
1  | Jack
2  | Lee
3  | Daniel

以及他们的交易表

id | owner_id | change
----------------
1  | 1  | 500
2  | 2  | 300
3  | 1  | -100
4  | 2  | 100
5  | 2  | -300

我正在尝试获取 Jack 帐户的余额。所以例如在这里我会返回

500
400

因为杰克首先将有 500 作为他的余额,在更改之后他将有 400。

我目前拥有的是

SELECT O.id, change FROM Owners O, Transactions WHERE O.id = 1 & Transactions.owner_id = 1;

但我只能得到杰克找零的那几行。我该怎么做才能获得每行的余额?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    如果您使用的是 MySQL 8,您可以执行以下操作:

    SELECT SUM(change_v) OVER(ORDER BY id) AS balance
    FROM transactions 
    WHERE owner_id = 1 
    

    另一种方法是使用变量,如下所示:

    SET @balance := 0;
    SELECT (@balance := @balance + change_v) AS balance
    FROM transactions
    WHERE owner_id = 1 
    ORDER BY id
    

    请记住,change 是 MySQL 中的保留字,这就是我简单地使用名称 change_v 的原因。您可以通过多种方式为列名使用保留字,但我不建议您这样做。

    【讨论】:

      猜你喜欢
      • 2023-02-25
      • 2012-10-12
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      相关资源
      最近更新 更多