MySql 部分求和

标签 mysql sql optimization

我需要帮助计算代码相同的每个值的总和,这是我的数据

OFFICECODE | DATE | VAL
10200 | 2018-05-01 | 1
10200 | 2018-05-02 | 2
10100 | 2018-05-01 | 3
10100 | 2018-05-02 | 2

我想得到这个结果

OFFICECODE | DATE | SUM(VAL) 
10200 | 2018-05-01 | 1
10200 | 2018-05-02 | 3 (1+2)
10100 | 2018-05-01 | 3
10100 | 2018-05-02 | 5 (3+2)

我尝试这个查询,但结果是所有 OFFICECODE 的总和

SELECT
      A.OFFICELKD,
      A.DATE,
      A.VAL,
      @VAL := @VAL + A.VAL AS `VALSUM`
   FROM 
      ( SELECT
              cur.OFFICELKD,
              cur.DATE,
              cur.VAL
           FROM
              tblReport cur
           LEFT JOIN 
          tblReport pre
       ON cur.OFFICECODE = pre.OFFICECODE
       GROUP BY cur.ID
           ORDER BY
              OFFICECODE ) AS A,
      ( SELECT @VAL := 0 ) AS SqlA
   ORDER BY OFFICECODE, DATE

请帮我解决这个问题

最佳答案

你很接近。您需要考虑 OFFICECODE:

SELECT r.*,
       (@val := if(@o = r.OFFICECODE, @val + a.val,
                   if(@o := r.OFFICECODE, a.val, a.val)
                  )
       ) as valsum
FROM (SELECT r.*
      FROM tblReport r 
      ORDER BY OFFICECODE, DATE
     ) r CROSS JOIN
     ( SELECT @o := -1, @VAL := 0 ) params;

关于MySql 部分求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50521080/

相关文章:

mysql - 如何在mysql中快速读取数据和写入数据?

PHP MySQL 从一张表中选择 ID,从另一张表中选择照片

php - 网站关键词、无限加载、OOP

mysql - SQL 将行复制到同一个表中的另一行

mysql - 如何通过 PhpMyAdmin 在 mysql 数据库中插入希腊文本

jquery - 来自 MySQL 数据库的谷歌地图的坐标,优化的正确方法?

r - R中的非线性约束优化

mysql - 使用 Doctrine2 : Error: Expected end of string, 的查询问题得到 '.'

php - 计算点击次数并将其存储在 FTP 中

Python:使用 CVXOPT 进行二次规划