今天有朋友在群里问到:在哪可以刷 SQL 题?
其实,要刷 SQL 题,对着《SQL COOKBOOK》、《SQL 经典实例》这两本书,把所有实例从头到尾全部实现一遍就很厉害了。
不过,我想她的本意是想知道有没有关于 SQL 的 Online Judge(在线评测系统,简称 OJ)。相比算法,关于 SQL 的 OJ 确实是少之又少,我目前了解到的就有两个网站:一个是 LeetCode,另外一个是 HackerRank。
LeetCode 的 SQL 题库中一共有 119 道题,题目的难度分为简单、中等、困难三个等级。图1 是题目列表,题目编号前面有锁的图标表示只有会员身份才能做题。
图1 LeetCode 上的 SQL 题目列表
任意选择一道可以回答的题目,点击它的链接将进入到题目详情和答题页,如图2 所示:左边栏是题目描述,右边是答题区。
当你把答案写完,点击右下角的“执行代码”按钮,等待它返回结果。如果 SQL 没有出现语法错误,它返回的执行结果包含输入、输出和预测结果。
图2 题目详情页
当检查“输出”项和“预测结果”完全对得上时,就可以提交答案了,系统将给我们反馈 SQL 的整体的执行结果。
图3 提交结果
HackerRank 上有 58 道 SQL 题,题目也是分了简单、中等、困难三个级别。
图4 HackerRank 的 SQL 题目列表
点击题目链接就进入了题目详情页,和 LeetCode 布局不一样的地方是:HackerRank 采用了上下分栏。在题目详情页,问题描述在最上边一栏,回答区域在问题描述的下方,最下边一栏是答题结果。
图5 HackerRank 的题目详情页
和 LeetCode 不同的是,当你运行代码的时候 HackerRank 直接告诉你答案是对还是错,并且不需要在 SELECT
子句中指定列名。
另外,HackerRank 是纯英文的网站,要看懂它的题目,得具备一定的英文阅读能力。话又说回来,作为一名 IT 人员,能够阅读英文材料本该就是必备的技能。
我去年就刷完了 HackerRank 上的 SQL 题目,拿到了 1130 分(「hjh520」 是本人的 ID)。
图6 成绩榜