mysql每次销售中每个唯一ID的累计金额:
我无法添加和累积每个id的金额, 我使用这个解决方案,但它不起作用,它将所有ID相加mysql每次销售中每个唯一ID的累计金额:,mysql,sql,sql-update,mysql-8.0,Mysql,Sql,Sql Update,Mysql 8.0,我无法添加和累积每个id的金额, 我使用这个解决方案,但它不起作用,它将所有ID相加 id product_id quantity acumulado 168 190 1 1 169 190 3 4 170 195 1 5 171 190 25.60 30.60 172 190 1 31.60 我用这个
id product_id quantity acumulado
168 190 1 1
169 190 3 4
170 195 1 5
171 190 25.60 30.60
172 190 1 31.60
我用这个:
SET @csum := 0;
UPDATE sma_sale_items
SET acumulado = (@csum := @csum + quantity)
ORDER BY id, product_id;
有解决办法吗?我需要这个
id product_id quantity acumulado
168 190 1 1
169 190 3 4
170 195 1 1
171 190 25.60 29.60
172 190 1 30.60
对于版本5.7?您可以使用包含窗口分析功能的
SELECT
语句,而不是UPDATE
语句:
SELECT id, product_id, quantity, SUM(quantity) OVER (ORDER BY id) AS acumulado
FROM sma_sale_items
acumulado
列不需要存储在作为可计算列的表中
如果您仍然喜欢更新
,请使用:
UPDATE sma_sale_items s1
JOIN (
SELECT id, product_id, SUM(quantity) OVER (ORDER BY id) AS acumulado
FROM sma_sale_items
ORDER BY id
) s2 ON s1.ID=s2.ID
SET s1.acumulado = s2.acumulado;
<强>更新< /强>:根据最后的编辑考虑使用
acumulado(按产品划分\u id按id排序)的总和(数量)
而不是像acumulado那样对(按id排序的订单)求和(数量)
通过添加按产品id划分的分区
,以区分按产品id划分的总和
谢谢,ID195不应与ID190一起添加,它们必须是每个idwelcome@KevinGomez的总和,但是您能查看您的acumulado值与演示中的值吗?