让我说:
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不存在。
答案 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提琴。