delimiter |
CREATE TRIGGER calCumluativeSum BEFORE INSERT ON someTable
FOR EACH ROW BEGIN
SET cumulative_sum = (
SELECT SUM(x.count)
FROM someTable x
WHERE x.id <= NEW.id
)
set NEW.cumulative_sum = cumulative_sum;
END;
|
SET @runtot:=0;
SELECT
q1.d,
q1.c,
(@runtot := @runtot + q1.c) AS rt
FROM
(SELECT
DAYOFYEAR(date) AS d,
COUNT(*) AS c
FROM orders
WHERE hasPaid > 0
GROUP BY d
ORDER BY d) AS q1
选择 id,count,sum (count) over (order by count desc)作为 tableName 的累积 _ sum;
我在 count 列上使用了 sum 累计函数,然后使用了 over 子句。它分别对每一行进行求和。第一排只有100个人。第二行是100 + 50。第三行是100 + 50 + 10等等。所以基本上每一行都是它和之前所有行的总和最后一行是所有行的总和。看待这个问题的方法是每一行是 ID 小于或等于它自己的数量之和。