关于聚合和排序的困难sql

关于聚合和排序的困难sql,sql,database,sql-order-by,aggregate-functions,Sql,Database,Sql Order By,Aggregate Functions,我想为下面的问题提供一些帮助,谢谢 原始表格: id, mark 1, 3 2, 4 3, 5 4, 10 5, 14 结果表 id, mark 1, 36 2, 33 3, 29 4, 24 5, 14 如何使用sql从原始表中获取结果表? 我注意到结果表中的mark字段是其他字段的总和,但不知道如何实现这一点。这似乎很简单。试试这个 SELECT t1.id, Sum(t2.mark) FROM originaltable t1 JOIN origi

我想为下面的问题提供一些帮助,谢谢

原始表格:

id, mark
1, 3
2, 4
3, 5
4, 10
5, 14
结果表

id, mark
1, 36
2, 33
3, 29
4, 24
5, 14
如何使用sql从原始表中获取结果表?
我注意到结果表中的mark字段是其他字段的总和,但不知道如何实现这一点。

这似乎很简单。试试这个

SELECT t1.id, 
       Sum(t2.mark) 
FROM   originaltable t1 
       JOIN originaltable t2 
         ON t1.id <= t2.id 
GROUP  BY t1.id 
ORDER  BY t1.id ASC 
选择t1.id,
总和(t2马克)
从原始可转换t1
连接原始t2

在t1.id上,如果您的DBMS支持分析函数,则这是使用分析函数的好例子:

  select id,
         sum(mark) over (order by id desc)
    from Original

@SergioTulentsev谢谢,Sergio.您使用的是哪种数据库管理系统?博士后?Oracle?使用MySql数据库。sql运行良好。谢谢我只是想知道如果id列包含string而不是number,是否仍然可以得到结果。例如,id:ken,Tom,Cat,…etcDmitry的解决方案在大型表上的性能要比公认的答案好得多(如果您使用的是现代DBMS)。