mysql - 多个不同 ID 的总和计算问题

标签 mysql sql sum

我的SQL代码如下所示。我遇到的问题是计算每个数字的值的总和。单独执行它们是可以的,并且在代码中指定数字时有效,但在未指定数字时无效,并且我希望总和计算适用于所有单独的数字。

{ 旨在计算纳税时的值(value)。因此,纳税日期之前的所有值都将被忽略,纳税日期之后发生的所有单位条目将从总单位中减去。税收单位也被减去。每个基金的税点总单位乘以税点价格。将这些资金的值(value)相加,得出该数字的总值(value)。 }

这是我完成的代码:

SELECT DISTINCT 

A.Number,

CAST(ROUND((SELECT SUM(Val)
FROM (SELECT((S.TotalUnits -  
 (SELECT SUM(Units) 
FROM TableIH AS F WHERE F.Fund = S.Fund AND F.Number = S.Number 
AND F.Date >= (SELECT MIN(Date) FROM TableIH AS D 
            WHERE D.Fund= F.Fund AND D.Number = F.Number AND D.Entry = 'Tax'     )
  )
        ) * T.Price
  ) AS Val

FROM TableIH T
 INNER JOIN TableID S
 ON T.Number = S.Number

 WHERE S.TotalUnits > 0 AND T.Fund = S.Fund
         AND T.Price = ANY (SELECT (Price) 
    FROM TableIH AS E WHERE E.Entry = 'Tax' AND E.Number = T.Number)
   )t
   )
  ,2) 
 AS DECIMAL (25,2)) AS "Value"


 FROM
TableIH A
INNER JOIN TableID C
ON C.Number = A.Number 


 group by A.Number

表格是:

表IH:

数量 基金 入场单位 价格 日期

  12           YY       RE          6         0.2         2015-02-02

  12           YY       税金        -10        0.1         2015-01-13

  13           XX       RE          6        0.2          2015-02-12

  13           XX       税金        -20        0.05       2014-12-11

  13           MM       税        -25        0.6         2014-12-10

  13           MM       RE         8          0.2         2013-11-02

表ID

 数量      基金     总单位

  12             YY          2000

  13             XX          1500

  13             MM          500

期望的结果:

 数字                 值

  12             [ ((2000) - (6) - (-10)) * 0.1 ] = 200.4

  13             [ ((1500) - (6) - (-20)) * 0.05 ] + [ ((500) - (-25)) * 0.6 ] = 390.7

但得到: - 结果是对所有数字求和,而不是在每个数字之间除以它。

 数字                 值

  12             [ (200.4 + 390.7] = 591.1

  13             [ (200.4 + 390.7] = 591.1

任何有关错误的帮助将不胜感激

最佳答案

晚上好,问题出在你的第三个嵌套子查询中,你的总和没有组,所以它对所有单位求和,所以你只会得到一个总数:

SELECT SUM(Units) 
FROM TableIH AS F WHERE F.Fund = S.Fund AND F.Number = S.Number 
AND F.Date >= (SELECT MIN(Date) FROM TableIH AS D 
        WHERE D.Fund= F.Fund AND D.Number = F.Number AND D.Entry = 'Tax'

关于mysql - 多个不同 ID 的总和计算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640830/

相关文章:

php - Laravel 5.8 Eloquent 无法按预期工作,尽管它的原始转储查询有效

python - 用python计算矩阵中单个单元格周围的单元格总和

php - 如何对不同行中堆叠的值求和? PHP PDO MYSQL

sql-server - SQL 服务器 : SUM() weird behaviour

sql - 当某些东西存储为数组时的 Rails where 子句

mysql - Node.js MySQL NPM 错误 "Cannot switch to old mode now."

python - 使用 %s 运算符在 Python 中创建 MySQL 数据库

php - 获取不是组成员的用户的逻辑

mysql - 如何避免连接中同一行的两个结果

mysql - 根据日期选择不起作用