目录

  • 一、竞赛规则
  • 二、奖励机制
    • 1、每个题目设置三个优胜奖
    • 2、对于所有参赛但没得奖的选手,会抽取30名幸运奖,各奖励罗技蓝牙无线鼠标一个;
  • 三、数据说明
    • 1、SPL集文件格式的数据
    • 2、在集算器(即SPL运行环境)中执行该脚本可将数据写入数据库(以MySQL为例)
  • 四、例题(仅供参考学习)
  • 五、本次竞赛试题
    • 1、上周四周五上涨、本周无停牌且至少4天上涨、本周一涨幅超1%且有一天涨幅超3%的股票中,接下来的2周里最大涨幅超10%的概率有多大?
    • 2、设有涨>5%、跌>5%、涨>5%、跌>5%、涨>5%五个事件,请计算在2021年1季度(时间段可作为参数)中某20天(天数可作为参数)内依次发生前1、2、3、4、5个事件的股票数分别是多少?
    • 3、在2021年第一季度(时间段可作为参数)中,每天选出最低价的涨停股和最高价的跌停股各一支,且前者价格低于后者的,找不到合适的则当天不选出。为避免精度导致的歧义,这里认为涨跌幅度超过9.5%即是涨停跌停。
  • 六、参考资料
  • 七、参赛时间及方式
  • 八、报名方式
    • ```为什么80%的码农做不了架构师?>>>```
    • [Java专栏目录 | 点击这里](https://blog.csdn.net/guorui_java/article/details/120098618)
  • 九、关注公众号哪吒编程,回复1024,获取Java思维导图,还有不定期的送书活动

一、竞赛规则

本次竞赛共有3个题目,将提供数据文件和参考的SQL解法,参赛选手要写出返回同样结果的SPL脚本。

可以假定所有数据能在内存中放下,代码中不必考虑外存计算。

最后提交SPL脚本文件(.splx)。

二、奖励机制

1、每个题目设置三个优胜奖

第一个给出正确解答的(以邮件发送时间为准);奖励现金1000元;
在正确的基础上,代码最为简洁的(可以通俗地理解为短,当然用短变量名导致代码短并没有意义);奖励现金1500元;
在正确的基础上,代码效率最高的(可以通俗地理解为快,但这里因为数据量较小,测试运行时间会有较大随机性,只能评估代码的计算量);奖励现金1500元;
对于2、3项,如果两份答案的评分相同,则最早收到的答案获胜(以邮件发送时间为准)。

2、对于所有参赛但没得奖的选手,会抽取30名幸运奖,各奖励罗技蓝牙无线鼠标一个;

三、数据说明

1、SPL集文件格式的数据

SPL集文件格式的数据

2、在集算器(即SPL运行环境)中执行该脚本可将数据写入数据库(以MySQL为例)

SPL脚本

四、例题(仅供参考学习)

找出2021年3月18日(该日期可作为参数)上涨且已经连续上涨天数达到或超过4天(该天数可作为参数)的股票和相应的连续上涨天数。

参考SQL(使用MySQL8版本及以上,以下同)

with recursive
t1 as (select *, row_number() over(partition by code order by tdate) rn
from stock),t2 as (select *
from t1 where tdate='2021-03-18'
union all
select t1.*
from t2 join t1 on t2.code=t1.code and t2.rn=t1.rn+1
where t2.price>t1.price)
select code,count(1)-1 cnt
from t2
group by code
having cnt>=4;

参考SPL解法

A
1 2021-03-18
2 =T(“data.btx”).select(tdate<=A1).sort(code,-tdate)
3 =A2.group@o(code).select(tdate==A1)
4 =A3.new(code,~.pselect(price<=price[1])-1:cnt)
5 =A4.select(cnt>=4)

五、本次竞赛试题

1、上周四周五上涨、本周无停牌且至少4天上涨、本周一涨幅超1%且有一天涨幅超3%的股票中,接下来的2周里最大涨幅超10%的概率有多大?

参考SQL:

with
#dayofweek('1970-01-04')=1, 周日t1 as (select *, datediff(tdate,'1970-01-04') div 7 as w,price/lag(price) over(partition by code order by tdate) risefrom stock),
t2 as (select t1.code, t1.w, count(1) z0, sum(if(t1.rise>1,1,0)) z1,sum(if(dayofweek(t1.tdate)=2 and t1.rise>1.01,1,0)) z2,sum(if(dayofweek(t1.tdate)<>2 and t1.rise>1.03,1,0)) z3from t1 join t1 e1 on t1.code=e1.code and t1.w=e1.w+1join t1 e2 on t1.code=e2.code and t1.w=e2.w+1where dayofweek(e1.tdate)=5 and e1.rise>1and dayofweek(e2.tdate)=6 and e2.rise>1group by code, whaving z0=5 and z1>=4 and z2=1 and z3>=1),
t4 as (select code, w, max(if(dayofweek(tdate)=6,price,null)) price5, max(price) hfrom t1 group by code, w),
t5 as (select code, w, price5, lead(h) over(partition by code order by w) h1,lead(h,2) over(partition by code order by w) h2from t4),
t6 as (select count(1) nfrom t5 join t2 using (code,w)where t5.h1/t5.price5>1.1 or t5.h2/t5.price5>1.1)
select n/(select count(1) from t2) p from t6;

2、设有涨>5%、跌>5%、涨>5%、跌>5%、涨>5%五个事件,请计算在2021年1季度(时间段可作为参数)中某20天(天数可作为参数)内依次发生前1、2、3、4、5个事件的股票数分别是多少?

参考SQL:

withq as (select *, row_number() over(partition by code order by tdate) n,price/lag(price) over(partition by code order by tdate) risefrom stock),q0 as (select * from q where tdate between '2021-01-01' and '2021-03-31'),q1 as (select code, n, 20-1 rg  #range是mysql关键字from q0 where rise>1.05),q2 as (select q0.code, q0.n, q1.rg+q1.n-q0.n rgfrom q0 join q1 on q0.code=q1.code and q0.n between q1.n+1 and q1.n+q1.rgwhere q0.rise<0.95),q3 as (select q0.code, q0.n, q2.rg+q2.n-q0.n rgfrom q0 join q2 on q0.code=q2.code and q0.n between q2.n+1 and q2.n+q2.rgwhere q0.rise>1.05),q4 as (select q0.code, q0.n, q3.rg+q3.n-q0.n rgfrom q0 join q3 on q0.code=q3.code and q0.n between q3.n+1 and q3.n+q3.rgwhere q0.rise<0.95),q5 as (select q0.code, q0.n, q4.rg+q4.n-q0.n rgfrom q0 join q4 on q0.code=q4.code and q0.n between q4.n+1 and q4.n+q4.rgwhere q0.rise>1.05)
select (select count(distinct code) from q0) n0,(select count(distinct code) from q1) n1,(select count(distinct code) from q2) n2,(select count(distinct code) from q3) n3,(select count(distinct code) from q4) n4,(select count(distinct code) from q5) n5;

3、在2021年第一季度(时间段可作为参数)中,每天选出最低价的涨停股和最高价的跌停股各一支,且前者价格低于后者的,找不到合适的则当天不选出。为避免精度导致的歧义,这里认为涨跌幅度超过9.5%即是涨停跌停。

参考SQL:

withq as (select *, price/lag(price) over(partition by code order by tdate) risefrom stock),q1 as (select tdate, first_value(code) over(w1) code1, first_value(price) over(w1) price1from qwhere tdate between '2021-01-01' and '2021-03-31' and rise>1.095window w1 as (partition by tdate order by price)),q2 as (select * from q1 group by tdate),q3 as (select tdate, first_value(code) over(w2) code2, first_value(price) over(w2) price2from qwhere tdate between '2021-01-01' and '2021-03-31' and rise<0.905window w2 as (partition by tdate order by price desc)),q4 as (select * from q3 group by tdate)
select q2.tdate, q2.code1, q2.price1, q4.code2, q4.price2
from q2 join q4 using (tdate)
where q2.price1<q4.price2
order by tdate;

六、参考资料

SPL介绍

SPL下载地址

SPL开源地址

学习SPL的路径

SPL中配置数据库连接

SPL学习资料

七、参赛时间及方式

活动时间:4月15日~5月12日
参赛方式:按照答题要求将答案发至邮箱:785713526@qq.com
榜单公布:会根据答题情况及时在官网公布得奖情况,将会在5月13日前公布完所有获奖信息。
奖励发放:5月20日前

八、报名方式

哪吒杯开源SPL答题竞赛,火爆来袭

为什么80%的码农做不了架构师?>>>

Java专栏目录 | 点击这里

九、关注公众号哪吒编程,回复1024,获取Java思维导图,还有不定期的送书活动

  1. C语言从入门到项目实战
  2. NoSQL数据库入门到实践
  3. Spring Cloud开发从入门到实战
  4. Spring5设计模式

哪吒杯开源SPL答题竞赛,火爆来袭相关推荐

  1. 江苏海洋大学计算机知识竞赛,厦门大学第十届海洋知识竞赛重磅来袭!

    原标题:厦门大学第十届海洋知识竞赛重磅来袭! 海洋占地球表面积超过70%, 蓝色星球,蕴藏万物: 中国海岸线总长度约3.2万公里, 蜿蜒曲折,千姿百态: 厦门毗邻台湾海峡, 海浪拍岸,鹭岛璀璨: 厦门 ...

  2. 第二届八一杯网络大学生数学竞赛试题

    2020年又迎来了一个八月,3年前的今天是八一开通公众号的期初,到目前已经陪伴同学们走过了三个春夏轮回,度过大学期间最美好的三年,同时也祝贺公众号三周年纪念日!现正值2020年暑假,相信同学们期待已久 ...

  3. 天纵竞赛系统助力江苏省“苏小登杯”不动产登记技能竞赛暨首届全国赛省级选拔赛

    7月14日,第四届江苏省"苏小登杯"不动产登记技能竞赛暨首届全国赛省级选拔赛在苏州广播电视总成功举办.天纵竞赛系统提供核心软件技术及其配套硬件支持. 本次竞赛由江苏全省13支队伍. ...

  4. 开源 SPL 优化报表应用应对没完没了

    现在应用中的报表大都使用报表工具开发,成熟的报表工具提供了丰富的显示设置.图表类型.导出打印等功能可以简化报表开发,非常方便.但是,实际报表开发中还是经常碰到一些非常棘手的深层次问题,即使是已经熟练使 ...

  5. 2014年湖北省TI杯大学生电子设计竞赛论文格式

    2014年湖北省TI杯大学生电子设计竞赛 B题:金属物体探測定位器(本科) 2014年8月15日 文件夹 1 系统方案 1.1 XXX的论证与选择........................... ...

  6. 短视频APP开发:短视频特效SDK功能火爆来袭!

    为什么短视频这么火呢?因为它符合了用户碎片化时间的需求,既娱乐了大众,又不会浪费用户太多时间. 短视频APP开发以互联网技术为核心,在原有的基础上不断进行创新,进而拥有多种强大的拍摄功能,让用户可以快 ...

  7. 开源SPL,ORM的终结者?

    业务逻辑经常包含较复杂的流程和计算,同时涉及数据库的读写.由于授权麻烦.影响数据库安全.无法迁移.技术要求高.编写困难等原因,很多场景不适合用存储过程实现业务逻辑.因为不擅长复杂的流程处理,SQL也不 ...

  8. 长沙计算机学院欧阳登轶,我校学生在2020年湖南省第十六届“强智杯”大学生计算机程序设计竞赛中喜获一等奖...

    10月17-18日,湖南省第十六届"强智杯"大学生计算机程序设计竞赛在长沙理工大学落下帷幕.本次大赛由湖南省教育厅主办,分为程序设计类.应用开发类和机器人类三项赛事.此次竞赛全省4 ...

  9. 巴卡斯杯 中国大学生程序设计竞赛 - 女生专场(重现)解题思路

    此文章可以使用目录功能哟↑(点击上方[+]) 经过这么一次女生赛,告诉我们千万不要小瞧女生,不然会死得很惨,orz... 链接→"巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场( ...

最新文章

  1. 英国JIC院士组3.8万英镑招博后-植物代谢物与微生物组-截止6月27日
  2. Windows下RStudio环境安装
  3. java consumer_Java 8 Consumer接口
  4. 【Verilog HDL 训练】第 04 天(竞争、冒险、译码等)
  5. 脑-脑接口:人类大脑利用意念控制老鼠走迷宫
  6. .Net微信开发之通过UnionID机制,解决用户在不同公众号,或在公众号、移动应用之间帐号统一问题...
  7. 【数字信号处理】相关函数 ( 相关函数性质 | 相关函数共轭对称性质 | 实信号自相关函数偶对称 | 复信号自相关函数共轭对称 | 复信号互相关函数共轭对称 )
  8. 计算机排版基础知识,计算机排版基础知识.pdf
  9. 区块链BaaS云服务(21)腾讯CCGP跨链平台“系统架构”
  10. opencv 图像增强_图像增强、锐化,利用 Python-OpenCV 帮你实现 4 种方法!
  11. 用Redux来进行组件间通讯
  12. 深入浅出学java_《深入浅出学JAVA开发初级》
  13. html双击单元格修改,JS实现鼠标双击选中表格单元格代码
  14. Houdini函数表达式
  15. SD-WAN 系列--企业专线、企业互联网
  16. Android 全仿To圈儿录音界面实现
  17. IBM 架构师为何以及如何成为了架构师
  18. 电子计算机的字母是什么意思,计算器上的英文字母
  19. 【爬虫BUG】‘list‘ object has no attribute ‘text‘
  20. 为什么企业微信只能群发一次?如何增加群发次数?

热门文章

  1. Vue:滚动页面到指定位置实现避坑笔记
  2. IOS APP 上了APPStore以后怎么修改搜索关键字
  3. C# 模仿微信生成九宫图头像
  4. 无法将“pytest”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
  5. 微信小游戏-海盗来了打金初体验
  6. SpringBoot实现发送QQ邮箱功能
  7. 钱币兑换 C/C++
  8. 安卓APP源码和设计报告——快递查询录入系统
  9. 增量表、全量表和拉链表
  10. Concurnas语言利用JVM开发高性能应用程序