楼主: wenO6ZTcp8ct6
91 1

[公开数据] 《PostgreSQL Exercises:SQL进阶练习、答案与配套数据库》 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

已卖:30份资源

初中生

95%

还不是VIP/贵宾

-

威望
0 级
论坛币
520 个
通用积分
125.0192
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
430 点
帖子
11
精华
0
在线时间
0 小时
注册时间
2020-9-16
最后登录
2020-9-16

楼主
wenO6ZTcp8ct6 发表于 昨天 17:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
《PostgreSQL Exercises:SQL进阶练习、答案与配套数据库》

 

SQL 学不下去,多半是因为只读不写。这个站把练习做成了可以立刻验证的形式:67 道题,全部跑在一个虚构的乡村俱乐部数据库上,写完点运行,右边直接给出结果对不对。站点内容按 CC BY-SA 3.0 开放,作者 Alisdair Owens。

 

题库构成

 

分类题量主要考什么
Basic12select、where、列运算、简单的排序与取别名
Joins and Subqueries8内连接、自连接、子查询、case 表达式
Modifying data9insert、update、delete,以及带条件的批量修改
Aggregates22分组、having、窗口函数、排名与累计值
Date6日期加减、时间戳截断、按月按年汇总
String7拼接、截取、替换、正则匹配
Recursive3递归 CTE,用成员的推荐关系链做查询
合计67—

 

Aggregates 一档占了三分之一,这与实际工作里最常写的查询对得上:绝大多数分析型 SQL 最后都落在分组与窗口上。

 

数据库只有三张表

 

教材级的设计,但字段够用:

 

表字段说明
cd.membersmemid、surname、firstname、address、zipcode、telephone、recommendedby、joindaterecommendedby 自引用 members,用来做推荐链
cd.facilitiesfacid、name、membercost、guestcost、initialoutlay、monthlymaintenance会员价与访客价分开,另有初始投入与月度维护成本
cd.bookingsbookid、facid、memid、starttime、slotsslots 是半小时为一格的时长

 

bookings 只存"半小时格数"而不存结束时间,这个设计会让时间区间类查询变麻烦,作者在说明里也承认这是故意的:让你先体会真实库里的别扭。facilities 的两套价格加上 initialoutlay 与 monthlymaintenance,刚好够算设施的收入、使用率与回本周期,这也是题目的主线和"俱乐部想知道哪些设施划算"这个业务问题对得上。

 

一道题是什么样子

 

以 Basic 的第一题为例,页面给的是一次完整闭环:

 

  • 问题:How can you retrieve all the information from the cd.facilities table?
  • 期望结果:一张九行的结果表,facid 0 到 8,能看到 Tennis Court、Badminton Court、Massage Room 这些设施与对应价格;
  • 作答区:可以直接写 SQL 并运行,页面会用同一份数据比对结果;
  • Hint 与 Answers and Discussion:点开后给出参考写法 select * from cd.facilities;,下面还有一段解释,讲 schema 是什么、* 为什么可以代替列名;
  • 快捷键:Alt-h 开关帮助、Alt-r 运行查询、Alt-x 运行选中文本、Alt-s 按光标位置运行。

 

这套设计对自学的人友好:先自己写,卡住看提示,写完再看解释,解释不是只给答案,还会说明这条语句为什么这样写。每一步的完成状态存在浏览器本地,下次打开能看到哪些题做过。

 

想在自己机器上跑

 

不想用在线环境的话,页面提供了建库脚本:

 

  • 安装 PostgreSQL;
  • 下载 dbfiles/clubdata.sql;
  • 运行 psql -U <用户名> -f clubdata.sql,把三张表和示例数据一起建好。

 

之后就可以在 psql 或任何客户端里做题,只是没有在线版的自动比对。

 

作者自己标出的三个坑

 


第一,这个 schema 是故意有缺陷的。作者在 Getting Started 里写得很直白:数据库设计在若干方面并不好,不要把它当作好设计的范例。学查询可以,学着照抄建表会踩坑。

 


第二,数据是虚构的,地址完全编造,成员与设施也是编的。用来练手没问题,别拿去做任何真实业务推断。

 


第三,在线运行 SQL 有安全限制。作者在 About 里说明了做法:数据库账号对练习表只有只读权限、每条语句都设了 statement_timeout、连接经 pgbouncer 做语句级池化并在归还连接时执行 ABORT 清理设置。这解释了为什么在线版做不了建表、改结构这类操作,也说明在线环境适合练查询而不是练 DDL。

 

建议从 Basic 的第三题开始,跳过第一题那种一眼能答的;到 Aggregates 那 22 题时不要跳,窗口函数与累计值的手感只能靠这几道题练出来。

 

────────────────

回复本帖,可见站点首页与建库脚本的直达链接、七个分类的题目清单入口,以及许可与引用写法。


游客,如果您要查看本帖隐藏内容请回复

把经管之家装进你常用的 AI 智能体中

一键快捷安装经管之家 MCP/技能,让 AI 帮你查教程、找数据、读论坛帖子。

检索、阅读公开帖子不收费,安装可申请领取:3 通用积分+100 论坛币+3 元论坛资金

请点击查看安装教程与福利 →

说明: AI 算力按所用平台规则计算;附件按原帖条件获取;福利领取条件以活动页面为准。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
wenO6ZTcp8ct6 发表于 昨天 18:56
先收藏,回头慢慢看

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-11-4 04:16