SQL趣题汇总(不定期更新)

小灰狼W 2014-06-27 03:33:57
曾经看到一个传说,数据库界有几位大师,可以用SQL语句来解数学难题。至于真假和案例,我也没见过,只有不明觉厉的份。但是可以肯定的是,SQL语句是个很强大的工具,除了平时工作中的那些枯燥的例子,还能实现很多功能。
以前在论坛里的时候,我特别喜欢做SQL题,一则可以锻炼思维,二则可以熟悉语法和相应函数的应用,在工作上遇到的时候会更加得心应手。那些趣题可能在平时没有太多的应用场景,拿来练手却是个不错的材料
刚才看到一篇帖子,就有了这个想法,开一篇帖来汇总这类趣题,大家一起来探讨探讨

大家喜欢的话,本帖将不定期更新

欢迎大家来补充。自己想到的,或是遇到的,都可以放上来。
注意是SQL趣题哦

来个以前写过的小九九,抛砖引玉一下
WITH tmp AS
( SELECT rownum rn FROM all_objects WHERE rownum<=9
)
SELECT a.rn,
SUBSTR(MAX( sys_connect_by_path(
CASE
WHEN a.rn*b.rn>=10
THEN SUBSTR(TRANSLATE(b.rn
||a.rn
||a.rn*b.rn,'1234567890','一二三四五六七八九十'),1,
CASE
WHEN mod(a.rn*b.rn,10)=0
OR a.rn *b.rn >20
THEN 3
ELSE 2
END)
||'十'
|| TRANSLATE(mod(a.rn*b.rn,10),'1234567890','一二三四五六七八九')
ELSE TRANSLATE(b.rn
||a.rn
||'='
||a.rn*b.rn,'123456789=','一二三四五六七八九得')
END ,',')),2) 口诀
FROM tmp A,
tmp b
WHERE a.rn >=b.rn
CONNECT BY prior a.rn=a.rn
AND prior b.rn =b.rn-1
START WITH b.rn =1
GROUP BY A.rn
ORDER BY 1;
...全文
9851 75 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
75 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38124765 2018-05-05
  • 打赏
  • 举报
回复
sql原来这么美
hongdu_dudua1 2017-03-07
  • 打赏
  • 举报
回复
先给个赞 再后面看具体的
zhou_sino 2017-02-21
  • 打赏
  • 举报
回复
有ABCD四个字符。 用SQL写出它的全排列,共4!种。 WITH tmp AS ( select 'A' as word from dual union all select 'B' from dual union all select 'C' from dual union all select 'D' from dual ) select a.word,b.word,c.word,d.word from tmp a,tmp b,tmp c,tmp d where decode(a.word,'A',1,'B',2,'C',4,'D',8) + decode(b.word,'A',1,'B',2,'C',4,'D',8) + decode(c.word,'A',1,'B',2,'C',4,'D',8) + decode(d.word,'A',1,'B',2,'C',4,'D',8)=15
joy_young 2017-02-20
  • 打赏
  • 举报
回复
引用 66 楼 love025nick 的回复:
挺不错的,学习了.....上班没事干看一下,参考五环大神的语法画了个心!
给个语句看看呀
xiaoguanzhao 2017-02-17
  • 打赏
  • 举报
回复
引用 65 楼 mhaiy24 的回复:
with a as (select rownum as num from dual connect by rownum <= 999999) select * from a where mod(a.num,2)=1 and mod(a.num,3)=0 and mod(a.num,4)=1 and mod(a.num,5)=4 and mod(a.num,6)=3 and mod(a.num,7)=5 and mod(a.num,8)=1 and mod(a.num,9)=0;
xiaoguanzhao 2017-02-16
  • 打赏
  • 举报
回复
表示压力很大。。
H_Gragon 2016-12-22
  • 打赏
  • 举报
回复
等待更新
~天一生水 2016-11-05
  • 打赏
  • 举报
回复
膜拜。。。。
junhou5 2016-10-25
  • 打赏
  • 举报
回复
活到老学到老
love025nick 2016-10-13
  • 打赏
  • 举报
回复

挺不错的,学习了.....上班没事干看一下,参考五环大神的语法画了个心!
仙子紫霞 2016-08-18
  • 打赏
  • 举报
回复
仙子紫霞 2016-08-18
  • 打赏
  • 举报
回复
不要停
zhengkai0211 2016-03-10
  • 打赏
  • 举报
回复
有木有高手画个心啊?
fwh_007 2016-02-03
  • 打赏
  • 举报
回复
很不错的帖子,学习下
jiana839353733 2016-01-29
  • 打赏
  • 举报
回复
帥!學習了!
zgycsmb 2016-01-28
  • 打赏
  • 举报
回复
很不错,学习了,,
baidu_33474847 2016-01-12
  • 打赏
  • 举报
回复
学习到了,用从帖子上学到的函数也来也个 一级菜单的id为00,表A中包含字段menuid(当前菜单id),menuname(当前菜单名称),parentid(父菜单id),列出一级菜单下所有递归菜单id和名称 select sys_connect_by_path(t.menuid||'('||t.menuname||')', '>') "Path" from A t start with t.parentid = '00' connect by prior t.menuid = t.parentid
baidu_33474847 2016-01-11
  • 打赏
  • 举报
回复
牛人果然多,新手学习中,目前接触到的系统函数不是很多,希望学习后能给出类似过河问题的sql方案,这些虽然目前没用到,活学活用的话再生活中应该还是很有用的
xqhu299 2015-09-25
  • 打赏
  • 举报
回复
大开眼界,受教了......
zhanbiguang 2015-09-24
  • 打赏
  • 举报
回复
看了这些颠覆我对oracle的看法,以为就处理一些数据而已,没有想到可以跟c++一样灵活
加载更多回复(51)

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧