トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
2-3-16 総積を求める
SQLパズル
総積テーブル
No 数値
-- ----
1 3
2 9
3 -6
4 5
5 -0.1
6 5
7 -2
8 0
9 10
Noまでの総積を求める。
出力結果
No 数値 総積
-- ---- ----
1 3 3
2 9 27
3 -6 -162
4 5 -810
5 -0.1 81
6 5 405
7 -2 -810
8 0 0
9 10 0
データ作成スクリプト
create table 総積(
No number(1),
数値 number(3,1));
insert into 総積 values(1, 3);
insert into 総積 values(2, 9);
insert into 総積 values(3,-6);
insert into 総積 values(4, 5);
insert into 総積 values(5,-0.1);
insert into 総積 values(6, 5);
insert into 総積 values(7,-2);
insert into 総積 values(8, 0);
insert into 総積 values(9,10);
commit;
SQL
select No,数値,
case when max(decode(数値,0,1,0)) over(order by No) = 1 then 0
else round(exp(sum(Ln(abs(nullif(数値,0)))) over (order by No))) end
* power(-1,sum(decode(sign(数値),-1,1,0)) over(order by No)) as 総積
from 総積
order by No;
解説