トップページに戻る
次のmodel句のサンプルへ
前のmodel句のサンプルへ
model句02 総積を求める
SQLパズル
ValTable
No Val
-- ----
1 3
2 9
3 -6
4 5
5 -0.1
6 5
7 -2
8 0
9 10
Noの昇順で、自分の行までのValの総積を求める。
出力結果
No Val souseki
-- ---- -------
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 ValTable(
No number(1),
Val number(3,1));
insert into ValTable values(1, 3);
insert into ValTable values(2, 9);
insert into ValTable values(3,-6);
insert into ValTable values(4, 5);
insert into ValTable values(5,-0.1);
insert into ValTable values(6, 5);
insert into ValTable values(7,-2);
insert into ValTable values(8, 0);
insert into ValTable values(9,10);
commit;
SQL
select No,Val,souseki
from ValTable
model
dimension by (No)
measures(Val,0 souseki)
rules(souseki[any] order by No = Val[CV(No)] * nvl(souseki[CV(No)-1],1))
order by No;
解説
分析関数と対数法則を使うよりも、model句を使ったほうが明らかにシンプルですね。
2-3-16 総積を求める
再帰with句09 総積を求める
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
セルが存在しない時のnvlの代用関数
present 名詞 プレゼント
他動 プレゼントする
presentNNV (exp1,exp2,exp3)
・exp1にセルが(1番最初から)存在し、かつ、非nullならexp2
・exp1にセルが(1番最初から)存在しない、または、nullならexp3
nvl2もどきと覚えるといいでしょう。
使いどころは、欠損セルのデフォルト値を変更した場合のようです。
present Null to New Valueの略と思われます。
マニュアル(presentV)
マニュアル(presentNNV)
マニュアル(presentV)(英語)
マニュアル(presentNNV)(英語)