再用sql實現一條小學題~

junsansi發表於2008-04-14

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章