|
整40人参与了答题,答题参与人的名单罗列在本贴二楼,现在进入评审期,第三期的评审在清明假期后将会公布。第四期的评审预计于4月8日之前完成,完成后将尽快公布获奖人信息,好立即给大家派送礼品,以及发送架构师大会参会门票!
盛拓传媒是中国领先的互联网传媒集团,以传媒和互联网的力量,帮助消费者提高生活品质和工作效率是其使命。盛拓传媒略投资者是澳大利亚电信集团,旗下拥有四家享有盛誉的专业垂直网站,涉及IT和汽车两大消费领域(IT168、泡泡网、车168、汽车之家)。集团目前有逾千名员工,在全国各个主要城市均设有分支机构,在IT和汽车领域广泛、精准地覆盖所有目标群体,有效用户数量最多、用户人群层次最丰富,拥有无可比拟的传播力和影响力,是中国最具价值的互联网专业传媒航母。
第一届“盛拓传媒杯”SQL数据库编程大赛宗旨并非考核脑筋急转弯或高深的算法考核各位puber的算法能力,而且主要以PL/SQL的技巧和技能,以及对SQL新功能的掌握能力,性能优化能力,并附带考核对数据库体系结构的综合理解。题目均以oracle及MS SQL Server数据库为平台。
本次大赛将分四期进行,每轮为答题期为1周,对每期竞赛的参与者,评委将会公正的给予打分,累积四期大赛的得分最高的TOP10将赠予礼品一份、数据库技术大会参会门票一张及授予“ITPUB SQL数据库编程大师”的称号。具体奖项和礼品说明如下:
TOP1-3:赠予IPOD touch 8G一个、2011数据库技术大会B票一张、并授予“ITPUB SQL数据库编程大师”的称号,奖励专属徽章以标识身份;
TOP4-10:赠予东芝 500G移动硬盘一个,2011数据库技术大会B票一张、并授予“ITPUB SQL数据库编程大师”的称号,奖励专属徽章以标识身份;
参与奖:每位参与的会员均可获赠有盛拓传媒的纪念品一份,所有参与的会员均可得到一枚参与徽章。
特别奖:此奖将从每期参与的puber中根据答题情况评选出2-3名不等的特别奖(例如:特别勤奋奖,特别创意奖等等,根据当期情况不同,奖项不同),赠予itpub技术丛书一册/itpub9周年保温杯一个(任选其一)。此奖项也将和以上奖项同时公布。
现在开始“盛拓传媒杯”SQL大赛最后一期 第四期答题,答题时间为:2011年3月25日-4月1日24:00结束,请大家在此时间内答题。
本期题目:
某项房产资源服务按天数、人数收费。收费标准与那一天的用户数有关,对于来自同一个房产经纪公司的用户,某天的总用户数越多则折扣越多。- CREATE TABLE services ( -------- 各项服务
- service_id NUMBER PRIMARY KEY
- ,service_name VARCHAR2(20)
- );
- CREATE TABLE companies ( -------- 使用服务的公司
- company_id NUMBER PRIMARY KEY
- ,company_name VARCHAR2(40)
- );
-
- CREATE TABLE service_users ( -------公司下的用户(房产经纪)
- user_id NUMBER PRIMARY KEY
- ,company_id NUMBER NOT NULL REFERENCES companies(company_id)
- ,user_name VARCHAR2(20)
- );
- CREATE TABLE service_usage (
- ------- 使用情况,起止日为闭合区间(首尾包含),如果只用一天,则start_date=end_date
- ------ 该表为大表,数据较多
- usage_id NUMBER PRIMARY KEY
- ,user_id NUMBER NOT NULL REFERENCES service_users(user_id)
- ,service_id NUMBER NOT NULL REFERENCES services(service_id)
- ,start_date DATE NOT NULL -------- 数据只含日期,不含时间
- ,end_date DATE NOT NULL -------- 数据只含日期,不含时间
- ,CONSTRAINT check_dates CHECK (end_date>=start_date)
- );
- CREATE TABLE service_rates ( -------收费标准,每个公司各不相同, 按人数段计费
- service_id NUMBER NOT NULL REFERENCES services(service_id)
- ,company_id NUMBER NOT NULL REFERENCES companies(company_id)
- ,category_id NUMBER NOT NULL ------ 1,2,3,4表示1档,2档,3档,4档
- ,user_count_min NUMBER NOT NULL ------ 该档人数下限,1档从1开始
- ,user_count_max NUMBER NOT NULL ------ 该档人数上限,同样是闭合区间。最后一档不妨设为99999999
- ,rate NUMBER NOT NULL ------ 该档的费率,乘以天数再乘以人数就是总费用
- ,PRIMARY KEY (company_id,service_id,category_id)
- );
- 输入:
- 起止日期(yyyymmdd字符串), 闭合区间(首尾包含), 如果只计算一天,则p_start_date=p_end_date
- 绑定变量:
- VAR p_start_date VARCHAR2(8);
- VAR p_end_date VARCHAR2(8);
- 输出:费用报表
- company_id,company_name,service_id,service_name,fee1,fee2,fee3,fee4,total_fee
- 其中:fee1,fee2,fee3,fee4分别表示1档,2档,3档,4档的费用,total_fee是上述4项的总和。若存在某档无数据,则总和为NULL。
- 按照company_id,service_id排序(升序)。
复制代码 测试数据:- INSERT INTO services VALUES(1,'Service A');
- INSERT INTO services VALUES(2,'Service B');
- INSERT INTO services VALUES(3,'Service C');
- INSERT INTO companies VALUES(1,'company A');
- INSERT INTO companies VALUES(2,'company B');
- INSERT INTO companies VALUES(3,'company C');
- INSERT INTO service_users VALUES(101,1,'User 1 Comp A');
- INSERT INTO service_users VALUES(102,1,'User 2 Comp A');
- INSERT INTO service_users VALUES(103,1,'User 3 Comp A');
- INSERT INTO service_users VALUES(104,1,'User 4 Comp A');
- INSERT INTO service_users VALUES(201,2,'User 1 Comp B');
- INSERT INTO service_users VALUES(202,2,'User 2 Comp B');
- INSERT INTO service_users VALUES(203,2,'User 3 Comp B');
- INSERT INTO service_users VALUES(204,2,'User 4 Comp B');
- INSERT INTO service_users VALUES(301,3,'User 1 Comp C');
- INSERT INTO service_users VALUES(302,3,'User 2 Comp C');
- INSERT INTO service_users VALUES(303,3,'User 3 Comp C');
- insert into service_rates values (1,1,1,1,1,20);
- insert into service_rates values (1,1,2,2,2,15);
- insert into service_rates values (1,1,3,3,3,10);
- insert into service_rates values (1,1,4,4,99999999,5);
- insert into service_rates values (2,1,1,1,1,30);
- insert into service_rates values (2,1,2,2,2,25);
- insert into service_rates values (2,1,3,3,3,20);
- insert into service_rates values (2,1,4,4,99999999,15);
- insert into service_rates values (1,2,1,1,1,22);
- insert into service_rates values (1,2,2,2,2,17);
- insert into service_rates values (1,2,3,3,3,12);
- insert into service_rates values (1,2,4,4,99999999,8);
- insert into service_rates values (2,2,1,1,1,28);
- insert into service_rates values (2,2,2,2,2,21);
- insert into service_rates values (2,2,3,3,3,17);
- insert into service_rates values (2,2,4,4,99999999,12);
- INSERT INTO service_usage VALUES(1,101,1,DATE '2010-1-5' ,DATE '2010-1-10');
- INSERT INTO service_usage VALUES(2,102,1,DATE '2010-1-3' ,DATE '2010-1-11');
- INSERT INTO service_usage VALUES(3,103,1,DATE '2010-1-7' ,DATE '2010-1-10');
- INSERT INTO service_usage VALUES(4,104,1,DATE '2010-1-10',DATE '2010-1-26');
- INSERT INTO service_usage VALUES(11,101,2,DATE '2010-1-1' ,DATE '2010-1-10');
- INSERT INTO service_usage VALUES(12,102,2,DATE '2010-1-2' ,DATE '2010-1-8' );
- INSERT INTO service_usage VALUES(13,103,2,DATE '2010-1-7' ,DATE '2010-1-10');
- INSERT INTO service_usage VALUES(14,104,2,DATE '2010-1-5' ,DATE '2010-1-13');
- INSERT INTO service_usage VALUES(21,201,1,DATE '2010-1-2' ,DATE '2010-1-21');
- INSERT INTO service_usage VALUES(22,202,1,DATE '2010-1-1' ,DATE '2010-1-17');
- INSERT INTO service_usage VALUES(23,203,1,DATE '2010-1-7' ,DATE '2010-1-13');
- INSERT INTO service_usage VALUES(24,204,1,DATE '2010-1-3' ,DATE '2010-1-30');
- INSERT INTO service_usage VALUES(31,201,2,DATE '2010-1-1' ,DATE '2010-1-2');
- INSERT INTO service_usage VALUES(32,202,2,DATE '2010-1-2' ,DATE '2010-1-3');
- INSERT INTO service_usage VALUES(33,203,2,DATE '2010-1-4' ,DATE '2010-1-10');
- INSERT INTO service_usage VALUES(34,204,2,DATE '2010-1-11',DATE '2010-1-13');
- commit;
复制代码 答题注意:
1.选手必须按照题目给定的表结构答题,否则不得分
2.应提供总体思路和关键步骤的汉字注释
3.并提供样例数据对如下输入变量的输出结果,以便验证- VAR p_start_date VARCHAR2(8);
- VAR p_end_date VARCHAR2(8);
- EXEC :p_start_date := '20100104';
- EXEC :p_end_date := '20100130';
复制代码 4.要求用一个SQL查询语句完成(可以包括子查询,但不能包括ddl和dml语句)
第四期活动评委:〇〇, newkid, dingjun123, bq_wang、lastwinner
参与规则:
每个参赛者以附件方式贴出自己的源代码,并将阅读权限设为11~100之间的数值,答案贴出后不允许编辑帖子。编辑过的帖子做无效处理。需要修改答案请发表新的回复,并以同样的方式上传新的答案。
附件名称以SQL大赛第N期(ID).txt来命名,通过rar压缩加密,推荐采取select sys_guid() from dual的方式产生密码,答题者需要在截止时间前将密码以论坛PM给论坛助理~贝贝~
pm链接:http://www.itpub.net/pm.php?action=send&uid=93405
此次活动也非常欢迎新注册会员参与,但因新注册会员三天内均在临时用户组,故不能上传附件,所以请参与此次活动的新会员,把答题压缩包和解压密码直接发邮件给我即可:wangbei@it168.com,我会在收到后第一时间给予您回复的。
特别申明:在答题期间不准在论坛公开讨论与此题有关的解题思路!
活动流程:
1、发布本期活动题目及答题时间范围,大家可以在此期间根据以上参与规则上传自己的参赛程序文档。
2、结束答题,进入评审阶段,评审将在一周内对所有参赛程序进行评审,评审结束后将公布评审及作品点评。
评审规则:
1、由ITPUB论坛助理下载参赛者附件并解压后删除参赛者ID,将各参赛文档编入代号,并发给当期评委。
2、评委抽签获得序号并评审相应序号的答案。运行程序,将运行出正确答案的参赛文档选出。
3、所有评委独立对运行出正确答案的程序打分,把相应分数告知论坛助理。论坛助理取平均数为该答案最后得分。
注:出题者负责向评委讲解思路,并配合评委书写点评。
第三期的答题结果,预计于4月6日公布,评委们在此期间会抓紧时间对大家的答题进行评审和点评给予建议!现在请大家继续支持第四期的活动,参与答题吧,无论语句写的好坏,参与其中必然得到最多收获,期待更多的puber参与到活动中! |
|