【问题标题】:Performing a prefix computation using SQL without defined procedures在没有定义过程的情况下使用 SQL 执行前缀计算
【发布时间】:2011-04-24 21:14:44
【问题描述】:

我有一个包含整数列的表 - 我需要一种方法来在另一个表中生成该列的“前缀”。

例如

我有 1, 0, 0, 0, 1, 0, 1, 0, 0 作为输入
我需要 1, 1, 1, 1, 2, 2, 3, 3, 3 作为输出

这需要在 SQLite 的 SQL 方言中完成,没有用户定义的函数或存储过程是可能的。

【问题讨论】:

  • 您能解释一下将您从1, 0, 0, 0, 1, 0, 1, 0, 0 带到1, 1, 1, 1, 2, 2, 3, 3, 3 的逻辑吗?这像一个运行总数吗?
  • 您能否澄清一下专栏的“前缀”是什么?所以不清楚你是如何根据输入生成输出的。
  • 好的,现在很干净(更新后)。所以你需要之前元素的总和。

标签: sql sqlite prefix


【解决方案1】:

试试这样的:

select value,
(select sum(t2.value) from table t2 where t2.id <= t1.id ) as accumulated
from table t1

来自:SQLite: accumulator (sum) column in a SELECT statement

【讨论】:

    【解决方案2】:

    所以要从input 表插入output 表,您需要以下查询:

    INSERT INTO output
    SELECT id,
    (SELECT sum(i1.value) FROM input AS i1 WHERE i1.rowid  <= i2.rowid) as VALUE
    FROM input AS i2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2010-10-16
      • 1970-01-01
      • 2018-05-21
      • 2013-03-17
      相关资源
      最近更新 更多