gpt4 book ai didi

oracle - Oracle 10 中的嵌套 cos() 计算

转载 作者:行者123 更新时间:2023-12-04 15:12:50 24 4
gpt4 key购买 nike

我有一些正整数的表

n
----
1
2
5
10

对于这张表的每一行,我想要值 cos(cos(...cos(0)..)) ( cos 被应用 n 次)要计算 通过 SQL 语句 (不允许使用 PL/SQL 存储过程和函数):
n   coscos
--- --------
1 1
2 0.540302305868
5 0.793480358743
10 0.731404042423

can在 Oracle 11g 中使用递归查询执行此操作。
是否可以在 Oracle 10g 中做同样的事情?

最佳答案

MODEL 条款可以解决这个问题:

测试数据:

create table test1(n number unique);
insert into test1 select * from table(sys.odcinumberlist(1,2,5,10));
commit;

查询:
--The last row for each N has the final coscos value.
select n, coscos
from
(
--Set each value to the cos() of the previous value.
select * from
(
--Each value of N has N rows, with value rownumber from 1 to N.
select n, rownumber
from
(
--Maximum number of rows needed (the largest number in the table)
select level rownumber
from dual
connect by level <= (select max(n) from test1)
) max_rows
cross join test1
where max_rows.rownumber <= test1.n
order by n, rownumber
) n_to_rows
model
partition by (n)
dimension by (rownumber)
measures (0 as coscos)
(
coscos[1] = cos(0),
coscos[rownumber > 1] = cos(coscos[cv(rownumber)-1])
)
)
where n = rownumber
order by n;

结果:
N   COSCOS
1 1
2 0.54030230586814
5 0.793480358742566
10 0.73140404242251

让圣战开始:

这个查询是个好主意吗?我不会在生产中运行这个查询,但希望它是一个有用的证明,任何问题都可以用 SQL 解决。

我已经看到数以千计的小时被浪费了,因为人们害怕使用 SQL。如果您大量使用数据库,那么不使用 SQL 作为您的主要编程语言是愚蠢的。偶尔花几个小时来测试 SQL 的极限是好的。一些奇怪的查询是为了避免感染许多数据库程序员的灾难性的逐行处理思维方式而付出的很小的代价。

关于oracle - Oracle 10 中的嵌套 cos() 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com