楼主: ~贝贝~

[精华] “盛拓传媒杯”SQL数据库编程大赛第三期评分及所有参赛选手答题公布!

[复制链接]
论坛徽章:
9607
土豪章
日期:2013-12-31 14:11:39土豪章
日期:2013-12-31 14:11:39阿森纳
日期:2013-06-03 17:00:31阿森纳
日期:2013-10-11 09:27:58法拉利
日期:2013-12-27 15:20:30林肯
日期:2013-12-27 15:19:09法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30法拉利
日期:2013-12-27 15:20:30
91#
发表于 2011-4-11 16:30 | 只看该作者
都是扯淡的, 11G中在10G没有的功能让人家拿什么去做,mssql就更不一样了,用mssql做和10G做就已经丢掉一部分分数了, 这样评就纯粹扯淡

使用道具 举报

回复
论坛徽章:
19
授权会员
日期:2007-10-19 09:45:02ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44奥运会纪念徽章:网球
日期:2008-07-01 09:01:502009日食纪念
日期:2009-07-22 09:30:002011新春纪念徽章
日期:2011-02-18 11:43:34SQL大赛参与纪念
日期:2011-04-13 12:08:17SQL数据库编程大师
日期:2011-04-13 12:09:012012新春纪念徽章
日期:2012-01-04 11:50:44奥运会纪念徽章:体操
日期:2012-10-09 16:13:52
92#
发表于 2011-4-11 17:41 | 只看该作者
享受过程吧,我觉的什么事情都很难有绝对的公平....

起码我是强迫自己复习了很多东西,哈哈

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
93#
发表于 2011-4-11 22:11 | 只看该作者
原帖由 lugionline 于 2011-4-11 11:15 发表


这个就是那些90分以上的运行速度吗?那么你看看3_1, 我这里测试的结果:

#1 20城市 0.28秒
#2 40城市 10 秒
#3 19城市 0.3秒
#4 33城市 0.78秒

执行速度基本上和 节点数 * 路径数^2 成比例, 请评委们指出这个脚本这个到底哪里不好?

我看不懂MSSQL语法就没有参与你的答卷评分,等我有空来翻译成ORACLE语法看看。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
94#
发表于 2011-4-12 04:03 | 只看该作者
翻译失败。ORACLE不支持在递归部分使用row_number(), 我想办法用TABLE()函数改写,但是碰到了BUG, 第二个子查询X出不了结果。

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
95#
发表于 2011-4-12 09:31 | 只看该作者
这个需要翻译成Oracle才能比较吗?这个比赛不是说oracle和sqlserver都可以吗?

程序的 运行速度,正确性 这个是明摆着的对吧? 既然这个比赛支持sqlserver,我相信你们肯定有一个能跑T-SQL的机器么

你在上面跑一下不就知道结果了?哪怕你无法理解这个脚本又有什么关系?

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
96#
发表于 2011-4-12 09:43 | 只看该作者
记得用SQL Server 2008哦,因为这次比赛明确说了是SQL Server 2008的,我可没违反规则,嘿嘿

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
97#
发表于 2011-4-12 10:33 | 只看该作者
oracle真是bug多多,刚刚三个题目我就听到两个人说找到oracle bug了

解释下计算表的做法或许对你转换有点帮助:

X 表中每条记录 保存的是当前所有节点到某一个举办城市的情况(生成树),其中一个字段保存每个节点的标志,另一个字段记录每个节点到举办城市的距离

每次循环:
  找出所有和生成树邻接的的路径(其中一个点在生成树中,一个点不在生成树中),
  然后选择其中到举办城市路径最短的一条记录
  把这个记录对应的节点加入生成树,同时更新距离

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
98#
发表于 2011-4-12 10:37 | 只看该作者
cites中存在的城市都要在结果列表中出现(不是举办地就是参加城市),不管费用是0还是不是0
routes中存在的城市可以作为举办地,但没在cities中出现的不能作为参加城市,因为这样的城市无人参加会议,所以不用输出

这是一个正常的管理需求,管理者需要知道各个参会城市的费用。

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
99#
发表于 2011-4-12 11:04 | 只看该作者
原帖由 lastwinner 于 2011-4-12 10:37 发表
cites中存在的城市都要在结果列表中出现(不是举办地就是参加城市),不管费用是0还是不是0
routes中存在的城市可以作为举办地,但没在cities中出现的不能作为参加城市,因为这样的城市无人参加会议,所以不用输出

这是一个正常的管理需求,管理者需要知道各个参会城市的费用。



首先,这个需求并没有出现在题目的要求中,但是结果要按什么排序是在题目中明确说明的,所以就算你认为这是不足也不应当出现分数比不排序的还低,对吧?

其次,我觉得你不能要求大家对需求进行*猜测*,如果没有在题目中提到的,即使有差异也应当认为正确,比方题目中并没有提到输出列的标题用什么,你能说用
"city1 city2 fee" 做标题的是错的而 "举办城市 目标城市 费用"是正确 吗? 这个你也可以说是正常的管理需求啊?

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
100#
发表于 2011-4-12 23:46 | 只看该作者


原帖由 lugionline 于 2011-4-12 09:31 发表
这个需要翻译成Oracle才能比较吗?这个比赛不是说oracle和sqlserver都可以吗?

程序的 运行速度,正确性 这个是明摆着的对吧? 既然这个比赛支持sqlserver,我相信你们肯定有一个能跑T-SQL的机器么

你在上面跑一下不就知道结果了?哪怕你无法理解这个脚本又有什么关系?


翻译成ORACLE只是我个人的爱好而已,这比起安装SQL SERVER要有趣得多。
我认为你的答案有独特之处,利用预先查出的四个城市的总费用为后面优化。别人的方法都是用距离做优化。

关于MSSQL的CTE我有个疑问。在UNION ALL里面的X, 你看到的数据是截止目前X表的全部数据,还是只有最近的一层?(层数=MAX(Y))
你的row_number()是不是对每个X记录分别排序(相当于有个隐含的PARTITION BY),还是对新产生的所有数据进行排序?


[ 本帖最后由 newkid 于 2011-4-13 03:01 编辑 ]

使用道具 举报

回复

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

本版积分规则 发表回复

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