当前位置: 首页 > 面试题库 >

用于查询帐户余额的SQL查询

郗学
2023-03-14
问题内容

我想使用原始sql来计算帐户余额,而无需额外的应用程序逻辑。交易模式包括金额,from_account_id和to_account_id

我的查询是

SELECT SUM(tdebit.amount) - SUM(tcredit.amount) as balance
FROM accounts as a
INNER JOIN transactions as tdebit ON a.id = tdebit.to_account_id
INNER JOIN transactions as tcredit ON a.id = tcredit.from_account_id
WHERE a.id = $1 AND tdebit.succeed = true AND tcredit.succeed = true

而且它没有按我预期的那样工作-结果是错误的,但是如果我仅在事务正常运行后才加入交易,例如只需借记金额就可以

SELECT SUM(tdebit.amount) as debit
FROM accounts as a
INNER JOIN transactions as tdebit ON a.id = tdebit.to_account_id
WHERE a.id = $1 AND tdebit.succeed = true

我在余额查询中错过了什么?

http://sqlfiddle.com/#!15/b5565/1


问题答案:

基本上,您正在计算atdebits和之间的叉积tcredits,即,对于tdebits您中的每一行,都要对中的所有行进行迭代tcredits。也没有理由加入accounts(除非to_account_id并且from_account_id不是外键)。

您只需要进行一次转账交易,您只需要知道金额是贷方还是借方。

SELECT SUM(CASE WHEN t.to_account_id = $1 THEN t.amount ELSE -t.amount END) AS amount
FROM transactions AS t
WHERE (t.to_account_id = $1 OR t.from_account_id = $1)
  AND t.succeed = true

如果帐户可以转账至自己,请添加一个t.to_account_id <> t.from_account_id



 类似资料:
  • 问题内容: 我有以下表格,分别是BankDetails和Transactiondetails。使用这两个表,我想获得帐户名称的当前余额。 表格: 插入两个表的脚本: 输出将是这样的: 我需要使用以上两个表格输入帐户持有人姓名,帐户编号和当前余额。 下面是我的查询,我想获得优化的查询,即如果可能的话不使用子查询。 注意: 在我的情况下,贷方=添加到帐户中的金额,借方=从帐户中扣除的金额。 对于未遵循

  • 接口说明 该接口由开发者开放给变现猫,变现猫进行调用。 这个请求参数为appUid、AppKey、时间戳等信息,并对请求参数进行MD5签名。开发者收到该请求后,需要对签名进行验证,验证通过后请返回余额信息给变现猫。 接口地址:在开发者后台接口配置模块配置(URL以http:\/\/开头) 示例:http://www.xxx.com/api/getAppBalanceApi.json 请求方式:G

  • 问题内容: 我有两个 带有列的表: 并带有列: 我需要返回CustomerID(CID),每个客户的订单数以及所有订单的每个客户的总金额。 到目前为止,我有两个单独的查询。一个给了我客户订单的数量。 另一个给了我总销售额。我在合并它们时遇到了麻烦… 我正在Access 2010中执行此操作。 问题答案: 您将在其他SQL引擎中使用: 不幸的是,哪个Access不支持。相反,您可以先获取订单金额,然

  • 我有以下数据 对于MySQL中的上述表布局,我试图计算出每个用户映射到多少个不同的DeviceCode 期待指导。 谢谢

  • 列出账户和检查余额 列出你现有的账户 在命令行输入: $ geth account list Account #0: {d1ade25ccd3d550a7eb532ac759cac7be09c2719} Account #1: {da65665fc30803cb1fb7e6d86691e20b1826dee0} Account #2: {e470b1a7d2c9c5c6f03bbaa8fa20db

  • 问题内容: 任何人都可以发布SQL查询来计算每天的总订单数吗? 以下是这些列及其在我的数据库中的数据。 例如,2009年2月有2个订单 我需要一个SQL查询,该查询将计算并显示每天的总金额。 因此,对于2009年2月3日,总计为699.98 我需要在图表中显示每天的总订单金额 如果使用PHP会更容易做到,那么也要提一下它。 更新: 我想澄清一下,我需要本月的每日总金额。我在最初的问题中忘记提及这一