トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

2-3-15 階乗を求めるその2

SQLパズル

1から10までの階乗を求める。

出力結果
階乗       階乗値
-------   -------
1の階乗         1
2の階乗         2
3の階乗         6
4の階乗        24
5の階乗       120
6の階乗       720
7の階乗      5040
8の階乗     40320
9の階乗    362880
10の階乗  3628800


SQL

col 階乗 for a8

with WorkView as (select RowNum as Val from all_catalog where RowNum <=10)
select to_char(a.Val) || 'の階乗' as 階乗,
round(exp(sum(Ln(b.Val)))) as 階乗値
from WorkView a,WorkView b
where a.Val >= b.Val
group by a.Val
order by a.Val;


解説

対数を使って、掛け算を足し算にして、階乗を計算してます。