如何使用SQL

时间:2017-08-04 06:59:05

标签: sql postgresql

我有这样的数据集。

build   failures
001     1
002     3
003     5

失败列表示构建时存在失败。

有没有办法在SQL中输出数据(在当前构建之前加上所有失败)?

build   failures
001     1
002     4
003     9

2 个答案:

答案 0 :(得分:1)

您可以使用窗口SUM

SELECT build, SUM(failures) OVER(ORDER BY build) AS failures
FROM your_tab
ORDER BY build;

答案 1 :(得分:1)

一般来说,虽然@ lad2025通常是正确的,但我会补充说,对于运行总计,你通常不想明确指定排序。通常,通过使用当前行的内置窗口,您将获得更好,更可维护的查询。

SELECT build, failures, 
       sum(failures) OVER (ROWS UNBOUNDED PRECEDING) as failures_to_date
  FROM your_tab
 ORDER BY build;

这使您能够重新排序查询,同时保持运行总计基于您决定的任何顺序(如果对此进行优化也不会感到惊讶,这意味着它可能表现更好)。