Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1240219
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Mysql/postgreSQL

2013-04-25 10:31:36

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> 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


阅读(614) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~