How do I calculate a running SUM on a SQLite query?

前端 未结 5 1242
渐次进展
渐次进展 2021-02-05 14:42

How do I get a column that is the sum of all the values before of another column?

5条回答
  •  借酒劲吻你
    2021-02-05 15:28

    You can do it by joining the table with itself (performing a so-called Cartesian or cross join). See the following example.

    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;
    

    Given a table containing countries and their per capita GDP it will give you a running total of the GDP figure.

    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
    ...
    

    Note that this can be a very resource-intensive operation, because if a table has N elements it will create a temporary table with N*N elements. I would not perform it on a large table.

提交回复
热议问题