我正在尝试在phpmyadmin中运行一个SQL查询,该查询将累计多行并将该总数插入到单元格中。
文件按日期排序,然后按其他一些细节排序。
我很难找到它的语法。
基本上我有一个名为'Points'的列,另一个名为'Total_Points'
它需要看起来像这样:
+--------+--------------+
| Points | Total Points |
+--------+--------------+
| 10 | 10 |
| 10 | 20 |
| 10 | 30 |
| 10 | 40 |
+--------+--------------+
依旧等等。
似乎必须有一些东西可以做到这一点,我只是错过了它
答案 0 :(得分:0)
对于运行总和,您可以使用“窗口函数”,如下所示:
create table tbl(ord int, points int);
insert into tbl values(1, 10),(2, 10), (3, 10), (4, 10);
select
*,
sum(points) over w total_points
from tbl
window w as (order by ord);
ord | points | total_points
-----+--------+--------------
1 | 10 | 10
2 | 10 | 20
3 | 10 | 30
4 | 10 | 40
我将您的ORDER BY
条件“汇总”为列ord
。你当然可以替换它。
除此之外:您没有指定具体的数据库供应商。我的例子在PostgreSQL上运行。其他SQL方言可能略有不同。
答案 1 :(得分:0)
关于SQL中的累积总和有很多讨论。
您可能需要查看this article。如果速度不是一个大问题,你也可以简单地使用:
select t1.id, t1.SomeNumt, SUM(t2.SomeNumt) as sum
from @t t1
inner join @t t2
on t1.id >= t2.id
group by t1.id, t1.SomeNumt
order by t1.id
关键问题是SQL实际上并不以任何顺序存储行。 “运行总计”的ieda假定行有一个订单,默认情况下,这不是真的。在SQL Server 2012中,有一个功能,但在人们使用它之前,这是我们能做的最好的。