墨天轮社区的 SQL 挑战赛活动一直受到大家的欢迎,本次我们联合阿里云瑶池数据库带来全新的参赛模式,赛题升级为三道,按照综合结果发奖。此外,阿里云瑶池数据库还为大家提供了 3 个月免费的 RDS MySQL Serverless 资源,参赛的同时还能体验云上开发的便利性。
—— 赛事奖池 ——
- 最佳 SQL 奖( 1 人)
挑战三个赛题并给出正确结果截图+SQL 源码+解题思路的参与者可参与评选,根据提交时间、 SQL 写法、SQL 性能、解题思路综合评选, 获胜者获得价值 799 元的 Beats Studio Buds 耳机 1 个。
- 优质 SQL 奖(20 人)
挑战任意一个赛题并给出正确结果截图+SQL 源码+解题思路的参与者有机会获得 20 元猫超卡,根据提交时间、 SQL 写法、SQL 性能、解题思路综合评选,每人限 1 张
- 阳光普照奖
挑战任意一个赛题并提交结果(不要求结果正确)+SQL 源码的参与者可获得墨天轮100墨值奖励。
—— 赛事时间轴 ——
- 5月29日 - 6月18日:参与者按照赛题要求前往阿里云领取 RDS MySQL Serverless 免费资源 并自写 SQL
- 6月26日:主办方宣布完整获奖名单及领奖方式
—— 活动赛题 ——
赛题 1:找出各项考试中的佼佼者
数据集下载地址:https://www.modb.pro/doc/103901
表: Student
Column Name | Type |
---|---|
id | int |
name | varchar |
Id是该表的主键列。
该表的每一行都表示学生的ID和姓名。
表: Test
Column Name | Type |
---|---|
id | int |
name | varchar |
Id是该表的主键列。
该表的每一行表示考试ID和考试名。
表: TestAttempt
Column Name | Type |
id | int |
studentId | int |
testId | int |
score | int |
Id是该表的主键列。
studentId和testId分别是Student表和Test表中id的外键。
该表的每一行表示一次考试记录,并包含了学生和考试的id。
一个学生可以参加任意考试,不限次数。
现在我们关注的是每门考试有哪些顶尖的学生。一门考试的 顶尖学生 是指一个学生的分数在参加该考试的 不同 学生中 得分排名前三 。
编写一个SQL查询,找出每个考试中 得分最高的的考生 。
若同一个考生有多条考试记录,则取最高分。
如果存在并列,将并列的考生都列举出来,直到列举的考生达到或超过三人。
以 每门考试考试分数从高到低的顺序 返回结果表。
👉示例
输入:
Student 表:
id | name |
1 | Joe |
2 | Henry |
3 | Sam |
4 | Max |
5 | Janet |
6 | Randy |
7 | Will |
Test 表:
id | name |
1 | GRE |
2 | TOEFL |
TestAttempt 表:
id | studentId | testId | score |
1 | 1 | 1 | 330 |
2 | 3 | 1 | 319 |
3 | 5 | 2 | 108 |
4 | 5 | 2 | 112 |
5 | 1 | 2 | 98 |
6 | 7 | 1 | 300 |
7 | 6 | 2 | 100 |
8 | 4 | 1 | 300 |
输出:
Test | Student | Score |
GRE | Joe | 330 |
GRE | Sam | 319 |
GRE | Max | 300 |
GRE | Will | 300 |
TOEFL | Henry | 112 |
TOEFL | Randy | 100 |
TOEFL | Joe | 98 |
解释:GRE考试,Joe和Sam的最好成绩分别排在前二,Max和Will并列第三。TOEFL中,Henry考取了112,108两个高分,但是只取最高的112分。Randy和Joe分别排在第二和第三。
赛题 2:游戏游玩情况
数据集下载地址:https://www.modb.pro/doc/103902
Table: Activity
Column Name | Type |
player_id | int |
device_id | int |
event_date | date |
games_played | int |
(player_id,event_date)是此表的主键。
这张表显示了某些游戏的玩家的活动情况。
每一行是一个玩家在指定日期的游玩记录,包含了设备信息,以及总共玩了多少款游戏。
编写一个 SQL 查询,报告在首次游玩后的一周内至少再有一次游玩的玩家的比例,也就是注册首周内至少有两次登录的玩家占总玩家的比例,四舍五入到小数点后两位。
👉示例
查询结果格式如下所示:
Activity table:
player_id | device_id | event_date | games_played |
1 | 2 | 2016-03-01 | 5 |
1 | 2 | 2016-03-02 | 6 |
2 | 3 | 2017-06-25 | 1 |
3 | 1 | 2016-03-02 | 0 |
3 | 4 | 2018-07-03 | 5 |
Result table:
fraction |
0.33 |
只有 ID 为 1 的玩家在第一天登录后七天内有第二次登录,所以答案是 1/3 = 0.33
赛题 3:计算三角形面积
数据集下载地址:https://www.modb.pro/doc/103903
表: Triangle
Column Name | Type |
id | int |
pointId1 | int |
pointId2 | int |
pointId3 | int |
id是该表的主键列。
该表的每一行包含三角形三个顶点的信息,pointId1、pointId2、pointId3均指向Point表的id字段。
表:Point
Column Name | Type |
id | int |
x | double |
y | double |
z | double |
id是该表的主键列。
该表的每一行包含一个点的三维空间坐标。
写一个SQL查询,计算每个三角形的面积,保留两位小数。
计算结果格式如下所示。
👉示例
输入:
Triangle 表:
id | pointId1 | pointId2 | pointId3 |
1 | 1 | 2 | 3 |
2 | 1 | 3 | 4 |
Point表:
id | x | y | z |
1 | 0.0 | 0.0 | 0.0 |
2 | 3.0 | 4.0 | 5.0 |
3 | 1.0 | 1.0 | 12.0 |
4 | -4.5 | 6.0 | -3.0 |
输出:
TriangleId | Area |
1 | 27.08 |
2 | 45.84 |
—— 提交结果及要求 ——
您需要先在阿里云开通 RDS MySQL Serverless 免费试用资源(点击即可跳转)后才能使用 DMS 执行 SQL(文末含执行操作教程),此后需将答案以文章形式发布在墨天轮社区,且需加上“阿里云sql挑战赛”标签。
文中需提交如下内容:
- DMS 截图(必选):需包含执行的 SQL 语句,输出结果,以及耗时信息(如截图)
- SQL 源码(必选):与 DMS 截图中一致的 SQL 源码文字版
- 解题思路(可选):您是如何思考题目及得出结果的,也欢迎您向我们反馈产品使用体验,字数 50 字以上,按内容质量评选最佳 SQL 奖
—— 最佳 SQL 奖评选标准 ——
前提条件:挑战三个赛题并给出正确结果截图+SQL 源码+解题思路
评选标准:
- 提交时间:占比 5%,按照挑战三道赛题并提交 DMS 截图、SQL 源码、解题思路三项内容的时间排序,提交时间越早,得分越高
- SQL 写法:占比 35%,按照 SQL 简洁度、安全性、规范性、可扩展性等进行打分,使用AliSQL特性酌情加分
- SQL 性能:占比 35%,按照 DMS 给出的耗时进行评分,三道赛题综合耗时越短,得分越高
- 解题思路:占比 25%,按照内容详实度、新颖性进行评分
—— 活动规则说明 ——
- 本活动仅面向 RDS MySQL Serverless 免费试用资源用户开放,参与者需要先免费开通 RDS MySQL Serverless 实例后才能提交参赛结果。如参与者已经是云数据库 RDS 用户或曾经购买过云数据库 RDS ,将无法参与本次活动,阿里云免费试用规则详见免费试用频道-活动规则。
- 本次赛事为参与者准备了三道赛题,参与者需要至少完成其中一道赛题才可参与奖项评选,提交结果需至少包含 DMS SQL 结果截图及 SQL 源码,如参与者要冲刺优质 SQL 奖、最佳 SQL 奖奖项,需要额外提交解题思路,具体要求请见“赛事奖池”及“赛事流程”两个部分。
- 每人最多可以提交一次执行结果,如参与者提交多次结果,以第一次为准,请参与者在6月18日 24:00 前提交结果。
- 除非有相反证据证明外,参与者参与活动所获得的全部权益和相应责任,均归属于参与活动的该墨天轮账号所对应的实名认证主体。
- 墨天轮可以根据活动的实际情况对活动规则进行变动或调整,相关变动或调整将公布在活动页面上,并于公布时即时生效;但不影响参与者在活动规则调整前已经获得的权益。
- 为保证活动的公平公正,如参与者在活动中存在隐瞒、虚构、作弊、欺诈或通过其他非正常手段规避活动规则、获取不当利益的行为,例如:作弊领取、恶意套现、网络攻击、虚假交易等,墨天轮有权收回相关权益、取消参与者的活动参与资格,撤销违规交易,必要时追究违规用户的法律责任。
相关资料
阿里云RDS MySQL Serverless 免费资源领取入口
如何配置 RDS MySQL Serverless 并使用 DMS 执行 SQL