如何得到一个列,它是另一列之前所有值的总和?

最佳答案

您可以通过将表与其自身连接(执行所谓的笛卡尔或cross join)。请参见以下示例。

SELECT a.name, a.gdppc, SUM(b.gdppc)
FROM gdppc AS a, gdppc AS b WHERE b.gdppc <= a.gdppc
GROUP BY b.id ORDER BY a.gdppc;

给出一个包含国家及其人均国内生产总值的表格,它将给出国内生产总值的连续总数。
Democratic Republic of Congo|329.645|329.645
Zimbabwe|370.465|700.11
Liberia|385.417|1085.527
Burundi|399.657|1485.184
Eritrea|678.954|2164.138
Niger|711.877|2876.015
Central African Republic|743.945|3619.96
Sierra Leone|781.594|4401.554
Togo|833.803|5235.357
Malawi|867.063|6102.42
Mozambique|932.511|7034.931
...

注意,这可能是一个非常资源密集型的操作,因为如果一个表有n个元素,它将创建一个带有n*n个元素的临时表。我不会在大桌子上表演。

关于sql - 如何计算SQLite查询的运行SUM?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5606560/

10-10 03:59