You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL交易余额计算结果异常,请求排查代码错误

SQL计算用户账户余额结果不符,求错误排查

场景说明

需要计算用户交易后的账户余额,涉及两张表:Users(存储用户初始余额)和Transactions(存储交易记录)。

Users表结构

| user_id | user_name | credit |
| ------- | --------- | ------ |
| 1       | Winston   | 100    |
| 2       | Moustafa  | 600    |
| 3       | Jonathan  | 800    |
| 4       | Maria     | 100    |

Transactions表结构

| trans_id | paid_by | paid_to | amount | transacted_on |
| -------- | ------- | ------- | ------ | ------------- |
| 1        | 2       | 4       | 1000   | 2020-08-28    |
| 2        | 3       | 2       | 600    | 2020-08-06    |
| 3        | 2       | 4       | 800    | 2020-08-15    |
| 4        | 1       | 3       | 800    | 2020-09-02    |
| 5        | 3       | 4       | 100    | 2020-08-02    |
| 6        | 3       | 4       | 500    | 2020-08-08    |
| 7        | 3       | 4       | 800    | 2020-09-17    |

我的实现代码

WITH tb1 AS (SELECT u.user_id, u.user_name, u.credit AS initial_amount,
SUM(t1.amount) AS credit_out, SUM(t2.amount) AS credit_in
FROM Users u
LEFT JOIN Transactions t1
ON u.user_id = t1.paid_by
LEFT JOIN Transactions t2
ON u.user_id = t2.paid_to
GROUP BY u.user_id),
tb2 AS (SELECT user_id, user_name, 
(initial_amount - IFNULL(credit_out,0) + IFNULL(credit_in,0)) AS credit
FROM tb1)
SELECT user_id,user_name,credit,
CASE WHEN credit < 0 THEN 'Yes' ELSE 'No' END AS credit_limit_breached
FROM tb2

我的思路

通过两次左连接Transactions表,分别关联paid_by字段统计总支出、paid_to字段统计总收入,再用初始余额减去总支出、加上总收入得到最终余额,最后判断是否透支。

输出结果对比

实际输出

| user_id | user_name | credit | credit_limit_breached |
| ------- | --------- | ------ | --------------------- |
| 1       | Winston   | -700   | Yes                   |
| 2       | Moustafa  | 0      | No                    |
| 3       | Jonathan  | 2000   | No                    |
| 4       | Maria     | 3300   | No                    |

预期输出

| user_id | user_name | credit | credit_limit_breached |
| ------- | --------- | ------ | --------------------- |
| 2       | Moustafa  | -600   | Yes                   |
| 3       | Jonathan  | -400   | Yes                   |
| 1       | Winston   | -700   | Yes                   |
| 4       | Maria     | 3300   | No                    |

实际计算出的余额和预期不符,找不到代码错误在哪里,求帮忙排查问题。


内容的提问来源于stack exchange,提问作者mmmmmm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:10:33