今天有朋友在群里问到:在哪可以刷 SQL 题?
其实,要刷 SQL 题,对着《SQL COOKBOOK》、《SQL 经典实例》这两本书,把所有实例从头到尾全部实现一遍就很厉害了。
不过,我想她的本意是想知道有没有关于 SQL 的 Online Judge(在线评测系统,简称 OJ)。相比算法,关于 SQL 的 OJ 确实是少之又少,我目前了解到的就有两个网站:一个是 LeetCode,另外一个是 HackerRank。
LeetCode
LeetCode 的 SQL 题库中一共有 119 道题,题目的难度分为简单、中等、困难三个等级。图1 是题目列表,题目编号前面有锁的图标表示只有会员身份才能做题。
图1 LeetCode 上的 SQL 题目列表
任意选择一道可以回答的题目,点击它的链接将进入到题目详情和答题页,如图2 所示:左边栏是题目描述,右边是答题区。
当你把答案写完,点击右下角的“执行代码”按钮,等待它返回结果。如果 SQL 没有出现语法错误,它返回的执行结果包含输入、输出和预测结果。
图2 题目详情页
当检查“输出”项和“预测结果”完全对得上时,就可以提交答案了,系统将给我们反馈 SQL 的整体的执行结果。
图3 提交结果
HackerRank
HackerRank 上有 58 道 SQL 题,题目也是分了简单、中等、困难三个级别。
图4 HackerRank 的 SQL 题目列表
点击题目链接就进入了题目详情页,和 LeetCode 布局不一样的地方是:HackerRank 采用了上下分栏。在题目详情页,问题描述在最上边一栏,回答区域在问题描述的下方,最下边一栏是答题结果。
图5 HackerRank 的题目详情页
和 LeetCode 不同的是,当你运行代码的时候 HackerRank 直接告诉你答案是对还是错,并且不需要在 SELECT
子句中指定列名。
另外,HackerRank 是纯英文的网站,要看懂它的题目,得具备一定的英文阅读能力。话又说回来,作为一名 IT 人员,能够阅读英文材料本该就是必备的技能。
我去年就刷完了 HackerRank 上的 SQL 题目,拿到了 1130 分(「hjh520」 是本人的 ID)。
图6 成绩榜
小结
LeetCode 和 HackerRank 都做得还不错,我将从下面几个方面对它们作一番比较。
-
支持的数据库产品。LeetCode 支持 Oracle、MS SQL Server、MySQL,HackerRank 比 LeetCode 多支持了一个数据库产品——DB2 。
-
题目量。LeetCode 提供了 119 道题,HackerRank 提供了 58 道题,难度差不多。如果你不是 LeetCode 会员,那么你能做的题目也就是 20 道左右,而 HackerRank 上的题目只要有帐号就能答题。
-
交流互动。LeetCode 和 HackerRank 在题目详情页面都设置了讨论问题和查看提交成功的用户的回答的模块。
-
交互体验。LeetCode 在执行代码后,需要自己去验证结果是否正确,而 HackerRank 直接告诉我们回答是否正确。从这点看, HackerRank 做得比 LeetCode 要好一点。
本文分享自微信公众号 - SQL实现(gh_684ee9235a26)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4600992/blog/4459066