我想计算出具有相同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/