ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 再用sql实现一条小学题~

再用sql实现一条小学题~

原创 Linux操作系统 作者:junsansi 时间:2008-04-14 10:08:02 0 删除 编辑

P先生、Q先生都具有足够的推理能力。这天,他们正在接受推理面试。
他们知道桌子的抽屉里有如下16张扑克牌:
红桃 A、Q、4
黑桃 J、8、4、2、7、3
草花 K、Q、5、4、6
方块 A、5
约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把这张牌
的花色告诉Q先生。
这时,约翰教授问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌吗?
P先生:“我不知道这张牌。”
Q先生:“我知道你不知道这张牌。”
P先生:“现在我知道这张牌了。”
Q先生:“我也知道了。”
请问:这张牌是什么牌?

使用SQL如下:

SQL> select * from jss_tmp5;
 
TP         VL
---------- ----------
红桃       A
红桃       Q
红桃       4
黑桃       J
黑桃       8
黑桃       4
黑桃       2
黑桃       7
黑桃       3
草花       K
草花       Q
草花       5
草花       4
草花       6
方块       A
方块       5
 
16 rows selected
 
SQL>
SQL> select tp, vl
  2    from (select d.*, count(tp) over(partition by tp) ect
  3            from (select c.tp, vl, count(vl) over(partition by vl) ct
  4                    from (select b.*, min(ct) over(partition by tp) mn
  5                            from (select a.*, count(vl) over(partition by vl) ct
  6                                    from jss_tmp5 a) b) c
  7                   where c.mn > 1) d
  8           where d.ct = 1)
  9   where ect = 1
 10  ;
 
TP         VL
---------- ----------
方块       5

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-235676/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-21

  • 博文量
    640
  • 访问量
    4095294