【问题标题】:Subtraction and Addition in one Mysql statement一条Mysql语句中的减法和加法
【发布时间】:2013-11-12 20:58:31
【问题描述】:

我有许多要操作的表。我想获得用户拥有的所有余额的总和,我希望从中减去他们所有信用卡余额的总和加上到月底仍需要支付的所有账单的总和。 我有一个非常繁忙的 Mysql 查询,但它一直被拒绝。 它的各个部分单独工作,但我无法让完整的查询工作。

   Select Sum ((Select SUM(Balance) from account)-
(Select sum((select sum(Balance) from credit_card) - (select sum(Amount) FROM bills where Date > 12)))

谁能看到我哪里出错了?

【问题讨论】:

  • 您没有多个用户?这是针对所有用户的查询。如果您共享表结构和一些示例数据,您可能可以获得更简单的查询。
  • 根据 Filipe 所说,您能否解释一下您的查询“被拒绝”是什么意思?当您尝试运行查询时,MySQL 是否显示错误,或者您是否有一个 DBA 不允许您按照当前编写的方式运行它?

标签: mysql


【解决方案1】:

两个建议:

1) 检查括号。看起来你缺少最外面的那个。 2) 在从 sum(amount) 中减去 sum(balance) 的第二个 select 子句中,没有真正需要单独的 select 和 SUM 子句。

给定一个查询,如果您包含 GROUP BY 列,则进行最外层的 SELECT 以使用 SUM

SELECT ( (SELECT SUM (Balance) FROM account)
            - ((SELECT sum (Balance) FROM credit_card)
                           - (SELECT sum (Amount)
                                FROM bills
                               WHERE Date > 12))

【讨论】:

  • 只有一个用户。 Accounts 表包含各种银行账户,即账户名称、银行名称、账户余额。因此,如果有两个银行账户,它将有两个余额。信用卡表将具有相同的设置。最后,账单表包含每月支出、提供商名称、金额的详细信息(即 Sky,40.00) 查询的想法是用户将在当月的任何时候知道他们的财务状况,即使考虑到未来的金额那个月的常规账单。
  • 如果是单用户,不需要GROUP BY
  • 我得到的错误是 #1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法。不过,我在第 1 行没有任何引号。
猜你喜欢
  • 2017-12-06
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 2015-01-27
  • 2013-11-17
  • 2011-02-08
  • 2016-09-25
  • 1970-01-01
相关资源
最近更新 更多