楼主: ~贝贝~

[Tips] ITPUB“盛拓传媒杯”SQL数据库编程大赛最后一题,答题结束,进入评审期!

 关闭 [复制链接]
论坛徽章:
2
奥运会纪念徽章:篮球
日期:2012-11-05 16:49:012013年新春福章
日期:2013-02-25 14:51:24
121#
发表于 2011-3-30 09:45 | 只看该作者
学习了 不错的啊 !!!!!

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
122#
发表于 2011-3-30 10:02 | 只看该作者
原帖由 solomon_007 于 2011-3-30 09:35 发表



我觉得应该不存在这种日期上的重复的。如果第一条的截止日期是20100305,那么下一个时间段的起始日期就不可能再是20100305,而应该是20100306(针对同一公司同一用户同一服务而言)



我觉得是应当可能的吧,有可能存在用户A使用服务S的多条记录,比方

A, S, 2010-01-07 到 2010-01-10
A, S, 2010-01-01 到 2010-01-15
A, S, 2010-01-09 到 2010-01-13

这样三条记录,否则题目不是简单很多了?

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
123#
发表于 2011-3-30 10:06 | 只看该作者
实际计算应当算作
A,S, 2010-01-01 到 2010-01-15

请大佬们明示,要是没有这种记录,那我的脚本还可以再抢救一下

使用道具 举报

回复
论坛徽章:
65
蛋疼蛋
日期:2012-11-06 13:54:02茶鸡蛋
日期:2013-07-04 10:51:21夏利
日期:2013-07-31 10:15:14劳斯莱斯
日期:2013-08-13 16:19:43林肯
日期:2013-08-28 09:03:36奥迪
日期:2013-09-24 16:02:28红旗
日期:2014-02-07 17:53:58马上有房
日期:2014-03-10 09:56:55马上有钱
日期:2014-03-24 17:46:34马上加薪
日期:2014-04-17 12:58:00
124#
发表于 2011-3-30 13:22 | 只看该作者
刚才翻了下前面的楼层,发现我提的问题已经解答过了。下面是对这个问题的重新理解,如果理解有错误请及时指出,谢谢。
具体理解如下:
1)同一用户在同一天可以多次使用同一服务,也就是说可能出现同一用户同一服务的多个数据中起止时间有交叉的情况。
2)发生上面的情况时,发生交叉的时间只作一个用户处理。
3)同样在计算这段交叉时间的费用时只算一个人的费用。
相关引用:
33楼: ai2ming提问: 如果同一用户在同一天2次使用同一公司的同一服务,用户数应该算2吗?
34楼: 〇〇回复   :  算1
题目: 该档的费率,乘以天数再乘以人数就是总费用。(注意这里是乘以人数,如果上面的人数算1,那这里也应该是1)

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
83
IT宝贝
日期:2013-11-15 18:40:242015年新春福章
日期:2015-03-06 11:57:31美羊羊
日期:2015-03-04 14:48:58马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11
125#
 楼主| 发表于 2011-3-30 15:00 | 只看该作者
已经26位提交了答题了,大家看看,没有遗漏吧
qqjue
jvkojvko
myfriend2010
renxiao2003
ai2ming
Arsenal-8
xgghxkhuang
yzsind
old_voldo
lk-2010
wenhuiqiao
junsansi
6666444
szusunny
oracle_chang
wangkxxe
jiqing1004
fnghost
cui6548
solomon_007
tang870
accelerator
mychary
lxddxl
AC米兰
yu_dongyang

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
126#
发表于 2011-3-30 15:21 | 只看该作者
最好澄清一下。

如果真的有这种数据,需要处理的话,性能会差好几倍。

而且不同理解还有不同数据结果。

要是测试数据中没有这种情况,那么,考虑到这种情况的人性能上会降低不少,而没考虑这个情况的,性能好,数据又似乎是正确的,有点不公平。


原帖由 todayz 于 2011-3-30 13:22 发表
刚才翻了下前面的楼层,发现我提的问题已经解答过了。下面是对这个问题的重新理解,如果理解有错误请及时指出,谢谢。
具体理解如下:
1)同一用户在同一天可以多次使用同一服务,也就是说可能出现同一用户同一服务的多个数据中起止时间有交叉的情况。
2)发生上面的情况时,发生交叉的时间只作一个用户处理。
3)同样在计算这段交叉时间的费用时只算一个人的费用。
相关引用:
33楼: ai2ming提问: 如果同一用户在同一天2次使用同一公司的同一服务,用户数应该算2吗?
34楼: 〇〇回复   :  算1
题目: 该档的费率,乘以天数再乘以人数就是总费用。(注意这里是乘以人数,如果上面的人数算1,那这里也应该是1)

使用道具 举报

回复
论坛徽章:
9
生肖徽章2007版:羊
日期:2009-08-24 09:30:46ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:42:49SQL大赛参与纪念
日期:2011-04-13 12:08:17ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:31奥运纪念徽章
日期:2012-12-06 09:21:402013年新春福章
日期:2013-02-25 14:51:24
127#
发表于 2011-3-30 15:21 | 只看该作者
-- 这道题目不算难,无非就是日期间隔的处理问题,请看我这个例子:
http://topic.csdn.net/u/20110325 ... 8-45cd4333c170.html

使用道具 举报

回复
论坛徽章:
65
蛋疼蛋
日期:2012-11-06 13:54:02茶鸡蛋
日期:2013-07-04 10:51:21夏利
日期:2013-07-31 10:15:14劳斯莱斯
日期:2013-08-13 16:19:43林肯
日期:2013-08-28 09:03:36奥迪
日期:2013-09-24 16:02:28红旗
日期:2014-02-07 17:53:58马上有房
日期:2014-03-10 09:56:55马上有钱
日期:2014-03-24 17:46:34马上加薪
日期:2014-04-17 12:58:00
128#
发表于 2011-3-30 15:37 | 只看该作者

回复 #128 jvkojvko 的帖子

老大,你说的这个主键和“同一个人同一天使用两次以上同服务”有什么关系呢?
你这个是service_rates表的主键,但记录服务的是service_usage表啊。
你可以在你的测试数据里加一条记录:
INSERT INTO service_usage VALUES(5,101,1,DATE '2010-1-5' ,DATE '2010-1-10');
用户101就在'2010-1-5' 到 '2010-1-10' 之间使用了两次service_id= 1 的服务。
btw, 如果你两次的结果是一样的,恭喜你答对了。

使用道具 举报

回复
论坛徽章:
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
129#
发表于 2011-3-30 15:39 | 只看该作者
原帖由 todayz 于 2011-3-30 15:37 发表
老大,你说的这个主键和“同一个人同一天使用两次以上同服务”有什么关系呢?
你这个是service_rates表的主键,但记录服务的是service_usage表啊。
你可以在你的测试数据里加一条记录:
INSERT INTO service_usage VALUES(5,101,1,DATE '2010-1-5' ,DATE '2010-1-10');
用户101就在'2010-1-5' 到 '2010-1-10' 之间使用了两次service_id= 1 的服务。
btw, 如果你两次的结果是一样的,恭喜你答对了。

看错表了,删了

使用道具 举报

回复
论坛徽章:
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
130#
发表于 2011-3-30 16:09 | 只看该作者
那就改一下吧,处理重复记录的问题,NND
密码不变

盛拓传媒杯SQL大赛第四期(jvkojvko)-V1.2.zip

1 KB, 阅读权限: 99, 下载次数: 1

使用道具 举报

回复

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

本版积分规则 发表回复

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