【问题标题】:Sum of result generated at run time in mysql querymysql查询中运行时生成的结果总和
【发布时间】:2013-02-01 21:47:51
【问题描述】:

我在 MySQL 中有一个包含大量数据的表。我想显示生成列的总和...

我减去两列,我想显示结果的总和。这是我所拥有的

 CREATE TABLE amounts(
id MEDIUMINT NOT NULL AUTO_INCREMENT,
bank_amount INT,
amount INT,
PRIMARY KEY (id)
) ENGINE=MyISAM;
INSERT INTO `amounts` (`id`, `bank_amount`, `amount`) VALUES (NULL, '1000', '100'),
(NULL, '2000', '200'),(NULL, '3000', '300'),(NULL, '1200', '500'),(NULL, '2000', '600'),
(NULL, '1202',   '800'),(NULL, '220', '50');

我有这个问题

SELECT bank_amount,amount,(bank_amount-amount) as bal from amounts where ......

上面的查询会给我这个结果

bank_amount 余额

1000 100 900

2000 200 1800

3000 300 2700

等等

现在我想显示 bal 的 SUM 也像 900+1800+2700

【问题讨论】:

    标签: mysql sql runtime


    【解决方案1】:

    这是你的意思吗?

    SELECT x.*
          , x.bank_amount-x.amount bal
          , SUM(y.bank_amount-y.amount) running
       FROM amounts x
       JOIN amounts y
         ON y.id <= x.id
      GROUP
         BY id;
     +----+-------------+--------+------+---------+
     | id | bank_amount | amount | bal  | running |
     +----+-------------+--------+------+---------+
     |  1 |        1000 |    100 |  900 |     900 |
     |  2 |        2000 |    200 | 1800 |    2700 |
     |  3 |        3000 |    300 | 2700 |    5400 |
     |  4 |        1200 |    500 |  700 |    6100 |
     |  5 |        2000 |    600 | 1400 |    7500 |
     |  6 |        1202 |    800 |  402 |    7902 |
     |  7 |         220 |     50 |  170 |    8072 |
     +----+-------------+--------+------+---------+
    

    【讨论】:

      【解决方案2】:

      你在找吗

      SELECT
          A.id,
          A.bank_amount,
          A.amount,
          (A.bank_amount - A.amount) as bal,
          T.Total_bal
      FROM amounts A
          JOIN 
            (
                SELECT Id, SUM(bank_amount-amount) Total_bal
                FROM amounts
                GROUP BY Id
            ) T
            ON A.Id = T.Id
      

      ?

      【讨论】:

      • 这将为每一行生成 SUM...我想要整个结果的总和。例如,假设我在第一行有这个...1000 100 900 在第二行我有这个.. .2000 200 1800.现在我需要 900+1800 的结果
      • @Methew 怎么了?你得到你想要的准确。你试过查询吗?
      • @Methew 你想为每个Id 得到这个结果并且每个Id 有很多行吗?
      • 我得到了每个 ID 的 bal 的正确结果。我每个 ID 有很多行。现在我想总结所有 bal 字段
      • 例如,客户 1 必须支付两张发票(发票 1 有 500,发票 2 有 400)..他为发票 1 支付了 200,因此剩余为 300。对于发票 2,他支付了 300,因此发票 2 中剩余 100。我需要剩余的两张发票..like 300+100=400
      猜你喜欢
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多