gy
2 楼
B*g
3 楼
问题:
1. Fibonacci Series 已经存在了还是要用sql 产生?
2. single query可以用几层select?
明天上午搞一个oracle的,然后看能不能换成t-sql
【在 y****w 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: http://beyondrelational.com/blogs/tc/archive/2009/12/27/tsql-challenge-20-about-finding-repeating-digits-on-on-fibonacci-sequence-numbers.aspx
1. Fibonacci Series 已经存在了还是要用sql 产生?
2. single query可以用几层select?
明天上午搞一个oracle的,然后看能不能换成t-sql
【在 y****w 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: http://beyondrelational.com/blogs/tc/archive/2009/12/27/tsql-challenge-20-about-finding-repeating-digits-on-on-fibonacci-sequence-numbers.aspx
y*w
6 楼
5个,用的是字符串函数。
后来改了下用数字,两层cte,7次(sql server则多一次,替换values)出现select,在我破x41上快了一倍,大约0.07s.
我贴个db2的,替换下函数就可以在sql server上跑。
你把oracle的做法贴一下吧,我不会oracle,今天下午试了好像oracle的cte差点,但是connect by不错。
with fibo(d1,d2,n) as
(
values (cast(1 as bigint), cast(1 as bigint),1)
union all
select d2, d1+d2, n+1 from fibo where n+1 < 92
),
f1(fibo,step,digit,cnt)as
(
select d2, d2/10, mod(d2,10),
case when mod(mod(d2,100),11) = 0 then 1 else 0 end from fibo
union all
select fibo, step/10, mod(step,10),
case when
【在 B*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 有几个select?
后来改了下用数字,两层cte,7次(sql server则多一次,替换values)出现select,在我破x41上快了一倍,大约0.07s.
我贴个db2的,替换下函数就可以在sql server上跑。
你把oracle的做法贴一下吧,我不会oracle,今天下午试了好像oracle的cte差点,但是connect by不错。
with fibo(d1,d2,n) as
(
values (cast(1 as bigint), cast(1 as bigint),1)
union all
select d2, d1+d2, n+1 from fibo where n+1 < 92
),
f1(fibo,step,digit,cnt)as
(
select d2, d2/10, mod(d2,10),
case when mod(mod(d2,100),11) = 0 then 1 else 0 end from fibo
union all
select fibo, step/10, mod(step,10),
case when
【在 B*****g 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 有几个select?
t*9
7 楼
这种算法一般在application 层面实现吧,为什么一定要在db实现?
B*g
8 楼
Oracle 10g+, 那个expected output不对呀
WITH t1 AS (
SELECT f, l-1 l
FROM DUAL
CONNECT BY LEVEL <= 10
MODEL RETURN ALL ROWS
PARTITION BY (LEVEL l)
DIMENSION BY (0 d)
MEASURES (0 f)
RULES
ITERATE (92)
(f[iteration_number] = DECODE (iteration_number, 0, 1, 1, 0, f[iteration_num
ber - 2]) + NVL (f[iteration_number - 1], 0))),
t2 AS (
SELECT f, SUM(SIGN(INSTR(f, l, 1 ,2))) c, ROW_NUMBER() OVER (PARTITION BY SU
M(SIGN(INSTR(f, l, 1 ,2))) ORDER BY f) r
FROM t1
GROUP BY f)
SELECT f, c
FROM t2
WHERE r <= 5
AN
【在 y****w 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 5个,用的是字符串函数。
: 后来改了下用数字,两层cte,7次(sql server则多一次,替换values)出现select,在我破x41上快了一倍,大约0.07s.
: 我贴个db2的,替换下函数就可以在sql server上跑。
: 你把oracle的做法贴一下吧,我不会oracle,今天下午试了好像oracle的cte差点,但是connect by不错。
: with fibo(d1,d2,n) as
: (
: values (cast(1 as bigint), cast(1 as bigint),1)
: union all
: select d2, d1+d2, n+1 from fibo where n+1 < 92
: ),
WITH t1 AS (
SELECT f, l-1 l
FROM DUAL
CONNECT BY LEVEL <= 10
MODEL RETURN ALL ROWS
PARTITION BY (LEVEL l)
DIMENSION BY (0 d)
MEASURES (0 f)
RULES
ITERATE (92)
(f[iteration_number] = DECODE (iteration_number, 0, 1, 1, 0, f[iteration_num
ber - 2]) + NVL (f[iteration_number - 1], 0))),
t2 AS (
SELECT f, SUM(SIGN(INSTR(f, l, 1 ,2))) c, ROW_NUMBER() OVER (PARTITION BY SU
M(SIGN(INSTR(f, l, 1 ,2))) ORDER BY f) r
FROM t1
GROUP BY f)
SELECT f, c
FROM t2
WHERE r <= 5
AN
【在 y****w 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 5个,用的是字符串函数。
: 后来改了下用数字,两层cte,7次(sql server则多一次,替换values)出现select,在我破x41上快了一倍,大约0.07s.
: 我贴个db2的,替换下函数就可以在sql server上跑。
: 你把oracle的做法贴一下吧,我不会oracle,今天下午试了好像oracle的cte差点,但是connect by不错。
: with fibo(d1,d2,n) as
: (
: values (cast(1 as bigint), cast(1 as bigint),1)
: union all
: select d2, d1+d2, n+1 from fibo where n+1 < 92
: ),
y*w
10 楼
学习了,
btw,你是指最后那一个值? 如果一个数字有两个连续出现,按这次的规则只计数一次。
昨天在台破机器这样按数值算快一倍,今天在主力机器的sql/db2,aix的db2测的结果都
差于substr的方案。
【在 B*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: Oracle 10g+, 那个expected output不对呀
: WITH t1 AS (
: SELECT f, l-1 l
: FROM DUAL
: CONNECT BY LEVEL <= 10
: MODEL RETURN ALL ROWS
: PARTITION BY (LEVEL l)
: DIMENSION BY (0 d)
: MEASURES (0 f)
: RULES
btw,你是指最后那一个值? 如果一个数字有两个连续出现,按这次的规则只计数一次。
昨天在台破机器这样按数值算快一倍,今天在主力机器的sql/db2,aix的db2测的结果都
差于substr的方案。
【在 B*****g 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: Oracle 10g+, 那个expected output不对呀
: WITH t1 AS (
: SELECT f, l-1 l
: FROM DUAL
: CONNECT BY LEVEL <= 10
: MODEL RETURN ALL ROWS
: PARTITION BY (LEVEL l)
: DIMENSION BY (0 d)
: MEASURES (0 f)
: RULES
B*g
11 楼
看错了,重复数要连着。改一下,明天上班才能测试
WITH t1 AS (
SELECT f, TO_CHAR(l-1)||TO_CHAR(l-1) l
FROM DUAL
CONNECT BY LEVEL <= 10
MODEL RETURN ALL ROWS
PARTITION BY (LEVEL l)
DIMENSION BY (0 d)
MEASURES (0 f)
RULES
ITERATE (92)
(f[iteration_number] = DECODE (iteration_number, 0, 1, 1, 0, f[iteration_num
ber - 2]) + NVL (f[iteration_number - 1], 0))),
t2 AS (
SELECT f, SUM(SIGN(INSTR(f, l))) c, ROW_NUMBER() OVER (PARTITION BY SUM(SIGN
(INSTR(f, l))) ORDER BY f) r
FROM t1
GROUP BY f)
SELECT f, c
FROM t2
WHERE r <= 5
A
【在 y****w 的大作中提到】![](/moin_static193/solenoid/img/up.png)
: 学习了,
: btw,你是指最后那一个值? 如果一个数字有两个连续出现,按这次的规则只计数一次。
: 昨天在台破机器这样按数值算快一倍,今天在主力机器的sql/db2,aix的db2测的结果都
: 差于substr的方案。
WITH t1 AS (
SELECT f, TO_CHAR(l-1)||TO_CHAR(l-1) l
FROM DUAL
CONNECT BY LEVEL <= 10
MODEL RETURN ALL ROWS
PARTITION BY (LEVEL l)
DIMENSION BY (0 d)
MEASURES (0 f)
RULES
ITERATE (92)
(f[iteration_number] = DECODE (iteration_number, 0, 1, 1, 0, f[iteration_num
ber - 2]) + NVL (f[iteration_number - 1], 0))),
t2 AS (
SELECT f, SUM(SIGN(INSTR(f, l))) c, ROW_NUMBER() OVER (PARTITION BY SUM(SIGN
(INSTR(f, l))) ORDER BY f) r
FROM t1
GROUP BY f)
SELECT f, c
FROM t2
WHERE r <= 5
A
【在 y****w 的大作中提到】
![](/moin_static193/solenoid/img/up.png)
: 学习了,
: btw,你是指最后那一个值? 如果一个数字有两个连续出现,按这次的规则只计数一次。
: 昨天在台破机器这样按数值算快一倍,今天在主力机器的sql/db2,aix的db2测的结果都
: 差于substr的方案。
gy
13 楼
都是牛银呀
相关阅读
[转载] what's wrong with this PL/SQLHow to install mysql server on Linux?大型数据库求助oracle的SQL跟foxpro的SQL相差很大么?关于M$ Access文件的问题database schema 打印问题Re: 请问各位大虾,哪里可以downloand MS Sqlserver 2000的英文版,多谢请教如何用alter table 来加一个not null的列Re:(解决了) 大俠 问个关于asp连SQL server的问题谁知道哪有Data Mining: Concepts and Techniques的电子英文版?大俠 问个关于asp连SQL server的问题我的EA Server怎么回事?need more info to help Re: Oracle downQuestion to JDBCMySQL on Mac要做一个简单的Digital-Library, 能给些Basic的指点吗?question: how to drop a tablespaceoracle nologging mode --- Help, pleaseASP可以用Oracle为数据库吗?Looking for DB SW