我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。
本博客所有内容均为原创,如有转载请注明作者和出处
用SQL解决两道有趣的题(二)
上一篇 /
下一篇 2008-01-03 09:47:25
/ 个人分类:ORACLE
Oracle的SQL语句功能还是很强的,看到两道比较有趣的题,用SQL来尝试求解。
用SQL解决两道有趣的题(一):http://yangtingkun.itpub.net/post/468/448940
第二个问题:
Gauss和Poincare在天堂相遇了,上帝说:你们都是人间最伟大的数学家,那我来出道题考考你们谁更聪明。我在左手写一个大于1小于100的数,在右手同样写一个大于1小于100的数,然后把他们的和写在Gauss手上,把积写在Poincare手上,看看你们能不能猜出这两个数字是几。
Hq)H YBG0Gauss看了手上的数字,说:“我不知道这两个数字是几,可我保证Poincare也不知道。”ITPUB个人空间5i
? _7Pk
Poincare看了手上的数字,说:“我原来的确不知道那两个数字是几,可我现在知道了。”
4n)i^a9fi.H-b0Gauss说:“那我也知道了。”ITPUB个人空间(bU0f#K$ZSK.e~1?
问题:那两个数字是几?
粗看上去似乎和刚才第一题很像,如果仔细研究就会发现二者的区别还是很大的,相比之下,这道题比第一题要难一些。
仍然是先给出SQL解,然后描述一下思路:
SQL> WITH T_NUM AS
A'z4EChw'p^0 2 (SELECT ROWNUM + 1 NUM FROM DUAL CONNECT BY LEVEL < 99)ITPUB个人空间+_h!eU]
3 SELECT A, B
~2L?z
h*U}S-}k~0 4 FROM
T"o
j"qWX5X1PU;HU0 5 (ITPUB个人空间}W
m0MT
o*I`)db
6 SELECT
7U/mK w
H?1z0 7 A,ITPUB个人空间1V0Dvwln
8 B,ITPUB个人空间$VI UO*HCr2y-Y
9 TOTAL,
} vxjg)N W0 10 MUL,ITPUB个人空间%n+I
Tf]`/D_^
11 MUL_P,ITPUB个人空间%C-inqA$`!Q8U5Y
12 COUNT(DECODE(MUL_P, 1, 1)) OVER(PARTITION BY TOTAL) VALUE