楼主: newkid

[精华] 趣味SQL:微软面试题:过河

[复制链接]
论坛徽章:
14
2012新春纪念徽章
日期:2012-04-12 11:57:16马上加薪
日期:2014-02-18 16:47:532014年新春福章
日期:2014-02-18 16:47:53ITPUB社区12周年站庆徽章
日期:2013-10-08 15:00:34ITPUB社区12周年站庆徽章
日期:2013-10-08 14:55:07三菱
日期:2013-09-23 10:39:10福特
日期:2013-08-30 15:00:26林肯
日期:2013-08-28 15:10:33ITPUB社区千里马徽章
日期:2013-06-09 10:15:34鲜花蛋
日期:2013-04-07 14:20:31
11#
发表于 2012-3-27 09:53 | 只看该作者
hythuyateng 发表于 2012-3-27 09:26
look this:

select  sum(times) total_time from (

楼上的AB一起过去了 你没计算A回去的时间 后面A怎么和C,D再过来!
还是理解错了 请明示!

使用道具 举报

回复
论坛徽章:
142
秀才
日期:2016-01-06 14:01:09秀才
日期:2016-02-18 10:06:46秀才
日期:2016-02-18 10:08:02秀才
日期:2016-02-18 10:08:14秀才
日期:2016-03-01 09:57:08天蝎座
日期:2016-03-18 14:23:56秀才
日期:2016-03-24 09:10:24秀才
日期:2016-03-24 09:20:52秀才
日期:2016-04-21 14:08:53秀才
日期:2016-04-21 14:11:59
12#
发表于 2012-3-27 10:05 | 只看该作者
过桥次序如下:
1. AB       2
2. A         1
3. CD       10
4. B         2
5. AB       2
总计用时17分钟。
楚风的还没仔细学习,但10楼的存在问题。

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
13#
发表于 2012-3-27 10:19 | 只看该作者
应该让速度差不多的一起走,要不跑得快的太亏了

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
4
蛋疼蛋
日期:2011-05-24 13:37:38ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:56复活蛋
日期:2012-01-04 17:41:40
14#
发表于 2012-3-27 11:18 | 只看该作者

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
15#
发表于 2012-3-27 14:18 | 只看该作者
SQL> set serveroutput on;
SQL>
SQL> CREATE TABLE bridge_crossing (
  2         name  VARCHAR2(10) PRIMARY KEY
  3        ,time  NUMBER
  4        );

Table created

SQL>
SQL> INSERT INTO bridge_crossing VALUES ('A', 1);

1 row inserted
SQL> INSERT INTO bridge_crossing VALUES ('B', 2);

1 row inserted
SQL> INSERT INTO bridge_crossing VALUES ('C', 5);

1 row inserted
SQL> INSERT INTO bridge_crossing VALUES ('D', 10);

1 row inserted
SQL> COMMIT;

Commit complete

SQL> select * from bridge_crossing;

NAME             TIME
---------- ----------
A                   1
B                   2
C                   5
D                  10

SQL>
SQL> with t1 as
  2   (select replace(ltrim(sys_connect_by_path(name, ','), ','), ',', '') rnd_1
  3      from bridge_crossing
  4     where level = 2
  5    connect by nocycle prior name <> name),
  6  t2 as
  7   (select replace(ltrim(sys_connect_by_path(rn, ','), ','), ',', '') str_pos
  8      from (select level rn from dual connect by level <= 3)
  9     where level = 2
10    connect by nocycle prior rn <> rn),
11  t3 as
12   (select rnd_1,
13           rnd_2,
14           substr(remain, substr(str_pos, 1, 1), 1) ||
15           substr(remain, substr(str_pos, 2, 1), 1) rnd_3,
16           substr(rnd_1, 1, 1) || substr(remain, substr(str_pos, 1, 1), 1) ||
17           substr(remain, substr(str_pos, 2, 1), 1) remain_4
18      from (select rnd_1,
19                   substr(rnd_1, 2, 1) rnd_2,
20                   replace('ABCD', substr(rnd_1, 1, 1), '') remain,
21                   str_pos
22              from t1, t2)),
23  t4 as
24   (select rnd_1,
25           rnd_2,
26           rnd_3,
27           substr(remain_4, rn, 1) rnd_4,
28           substr(remain_4, rn, 1) ||
29           replace(replace(replace('ABCD', substr(remain_4, 1, 1), ''),
30                           substr(remain_4, 2, 1),
31                           ''),
32                   substr(remain_4, 3, 1),
33                   '') rnd_5
34      from t3, (select level rn from dual connect by level <= 3)),
35  t5 as
36   (select rnd_1,
37           rnd_2,
38           rnd_3,
39           rnd_4,
40           rnd_5,
41           greatest(decode(substr(rnd_1, 1, 1),
42                           'A',
43                           1,
44                           'B',
45                           2,
46                           'C',
47                           5,
48                           'D',
49                           10),
50                    decode(substr(rnd_1, 2, 1), 'A', 1, 'B', 2, 'C', 5, 'D', 10)) +
51           decode(rnd_2, 'A', 1, 'B', 2, 'C', 5, 'D', 10) +
52           greatest(decode(substr(rnd_3, 1, 1),
53                           'A',
54                           1,
55                           'B',
56                           2,
57                           'C',
58                           5,
59                           'D',
60                           10),
61                    decode(substr(rnd_3, 2, 1), 'A', 1, 'B', 2, 'C', 5, 'D', 10)) +
62           decode(rnd_4, 'A', 1, 'B', 2, 'C', 5, 'D', 10) +
63           greatest(decode(substr(rnd_5, 1, 1),
64                           'A',
65                           1,
66                           'B',
67                           2,
68                           'C',
69                           5,
70                           'D',
71                           10),
72                    decode(substr(rnd_5, 2, 1), 'A', 1, 'B', 2, 'C', 5, 'D', 10)) sum_cost
73      from t4)
74  select *
75    from (select t5.*, rank() over(order by sum_cost) rk from t5)
76   where rk = 1
77  /

RND_1                                                                            RND_2 RND_3 RND_4 RND_5    SUM_COST         RK
-------------------------------------------------------------------------------- ----- ----- ----- ------ ---------- ----------
AB                                                                               B     CD    A     AB             17          1
BA                                                                               A     DC    B     BA             17          1
AB                                                                               B     DC    A     AB             17          1
BA                                                                               A     CD    B     BA             17          1

SQL>

使用道具 举报

回复
论坛徽章:
142
秀才
日期:2016-01-06 14:01:09秀才
日期:2016-02-18 10:06:46秀才
日期:2016-02-18 10:08:02秀才
日期:2016-02-18 10:08:14秀才
日期:2016-03-01 09:57:08天蝎座
日期:2016-03-18 14:23:56秀才
日期:2016-03-24 09:10:24秀才
日期:2016-03-24 09:20:52秀才
日期:2016-04-21 14:08:53秀才
日期:2016-04-21 14:11:59
16#
发表于 2012-3-27 14:37 | 只看该作者
solomon_007 发表于 2012-3-27 14:18
SQL> set serveroutput on;
SQL>
SQL> CREATE TABLE bridge_crossing (

猫猫NB啊!
有个问题:AB和BA应该算同样滴吧?

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
17#
发表于 2012-3-27 14:41 | 只看该作者
visual2006 发表于 2012-3-27 14:37
猫猫NB啊!
有个问题:AB和BA应该算同样滴吧?

感觉我的是比较垃圾的写法,我考虑的是排列,不是组合,组合应该更好

使用道具 举报

回复
论坛徽章:
20
马上有钱
日期:2014-03-05 18:13:002013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:072012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41迷宫蛋
日期:2011-11-07 14:46:51茶鸡蛋
日期:2011-07-11 20:36:00咸鸭蛋
日期:2011-06-30 15:11:57辩论纪念章
日期:2010-11-15 09:41:552010广州亚运会纪念徽章:网球
日期:2011-05-11 14:11:47
18#
发表于 2012-3-27 14:47 | 只看该作者
有意思,晚点试试。

使用道具 举报

回复
论坛徽章:
10000
绿钻
日期:2016-02-22 15:43:08绿钻
日期:2016-03-01 18:19:01绿钻
日期:2016-02-22 15:43:08绿钻
日期:2016-03-01 18:19:01绿钻
日期:2015-12-16 18:42:35绿钻
日期:2015-12-11 00:18:01绿钻
日期:2015-09-10 13:05:08绿钻
日期:2015-12-11 00:18:01绿钻
日期:2015-09-10 13:05:08绿钻
日期:2015-09-10 13:05:08
19#
发表于 2012-3-27 16:24 | 只看该作者
up

使用道具 举报

回复
论坛徽章:
27
ITPUB官方微博粉丝徽章
日期:2011-08-17 10:35:36托尼托尼·乔巴
日期:2017-10-25 16:45:57秀才
日期:2017-04-05 13:18:06秀才
日期:2017-03-02 10:35:322016猴年福章
日期:2016-02-23 09:58:342016猴年福章
日期:2016-02-18 09:31:302015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:31
20#
发表于 2012-3-27 16:48 | 只看该作者
solomon_007 发表于 2012-3-27 14:41
感觉我的是比较垃圾的写法,我考虑的是排列,不是组合,组合应该更好

果然这类问题你一定会出现~
猫猫强大

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表