我想计算出具有相同Datedate和fundid的所有行的总和的每一行的除法,但是由于结果与预期的不同,我的查询似乎是错误的。
我的表架构如下所示,我避免使用我的表架构,因为它具有更多列:

+----+--------+------------+--------+
| id | fundid | Dateadded  | amount |
+====+========+============+========+
| 1  |  45    | 21-02-2018 |  5412  |
| 2  |  45    | 21-02-2018 |  5414  |
| 3  |  45    | 21-02-2018 |  1412  |
| 4  |  45    | 22-02-2018 |  5756  |
| 5  |  45    | 22-02-2018 |  4412  |
| 6  |  45    | 25-02-2018 |  2532  |
| 7  |  45    | 26-02-2018 |  7892  |
| 8  |  45    | 26-02-2018 |  8143  |
+----+-------+-------------+--------+



ID为:1、2、3的行应一起计算,因为它们具有
相同的基数和日期。
具有ID的行:4.5相同的内容。
ID为6的行仅是一个。
具有ID的行:7,8同样。


我的SQL查询:

SELECT fundid
     , Dateadded
     , ( amount / SUM(amount) ) AS AvgRow
  FROM stock2
 GROUP
    BY fundid
     , Dateadded
 ORDER
    BY DateAdded ASC

最佳答案

这是你想要的吗?

select t.*, t.amount / tt.total_amount
from stock2  t join
     (select fundid, dateadded, sum(amount) as total_amount
      from stock2 t
      group by fundid, dateadded
     ) tt
     using (fundid, dateadded);


还是这个?

select fundid, dateadded, sum(t.amount) / tt.total_amount
from stock2  t cross join
     (select sum(amount) as total_amount
      from stock2 t
     ) tt
 group by fundid, dateadded, tt.total_amount;

关于mysql - 每行除以两列的值相同的行的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52730825/

10-16 13:26