Sqlite乘以单个列的所有值

时间:2018-07-23 13:48:09

标签: sql sqlite

让我说:

id | value
01 | 2
02 | 2
03 | NULL
04 | 4
05 | 3

如何在Sqlite(2 * 2 * 4 * 3)中使用select语句获得48?

在传统的SQL中,我们结合使用EXP(),SUM()和LOG(),但在Sqlite中,LOG不存在。

1 个答案:

答案 0 :(得分:1)

我认为SQLite中唯一的方法是递归CTE。让我假设id是顺序的:

with cte as (
      select id, value as prod, 1 as lev
      from t
      where id = 1
      union all
      select t.id, cte.prod * coalesce(t.value, 1), lev + 1
      from cte join
           t
           on t.id = cte.id + 1
    )
select prod
from cte
order by lev desc
limit 1;

其他数据库中的常规方法是使用自然日志,求和和求幂。但是,您需要使用SQLite扩展来获得这些数学函数。

如果您要使用扩展名,则最好使用创建product()聚合函数的扩展名。

Here是一个SQL提琴。