2

我正在尝试在 phpmyadmin 中运行一个 SQL 查询,该查询将总计多行并将该总计插入单元格中。

该文件按日期排序,然后是其他一些细节。

我只是很难找到它的语法。

基本上我有一列叫做“Points”,另一列叫做“Total_Points”

它需要看起来像这样:

+--------+--------------+
| Points | Total Points |
+--------+--------------+
|   10   |      10      |
|   10   |      20      |
|   10   |      30      |
|   10   |      40      |
+--------+--------------+

等等等等。
似乎必须有一些东西可以做到这一点,而我只是想念它

4

2 回答 2

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为 column ord。你当然可以更换它。

除此之外:您没有指定具体的数据库供应商。我的示例在 PostgreSQL 上运行。其他 SQL 方言可能略有不同。

于 2012-05-07T18:37:27.483 回答
0

关于 SQL 中的累积和有很多讨论。

你可能想看看这篇文章。如果速度不是大问题,您也可以简单地使用:

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 实际上并不按任何顺序存储行。“运行总计”的 eda 假定行有顺序,默认情况下,这不是真的。在 SQL Server 2012 中,有一个用于此的功能,但在人们使用它之前,这是我们能做的最好的。

于 2012-05-07T19:18:27.103 回答