面向数据科学家的 SQL:100 个查询

这份围绕 100 个示例查询构建的单页 SQL 教程,被赞为对关系数据库清晰且实用的入门材料——不仅适合有志成为数据科学的人,也适合软件工程师。评论者还提到互补的学习资源,指出了非等值连接、SQLite 特定语法和外连接语义等技术细节,并建议交互式环境或更大的数据集会更贴近真实世界的分析工作。讨论串还引出了更大的问题:当下业界里的“数据科学家”究竟意味着什么,以及 ORM 和大语言模型正在如何改变人们学习和编写 SQL 的方式。

教程的整体反响

  • 这份教程被广泛称赞为一份简洁、以示例驱动的 SQL 指南,既适合作为入门,也适合作为复习材料;对许多用途来说,其内容密度足以匹配甚至替代一个学期的课程。
  • 也有人认为,它更像是一份通用的 SQL/SQLite 教程,而不是专门“面向数据科学家”的教程。
  • 学习成果(连接、窗口函数、事务、触发器、JSON、从 Python/ORM 访问数据库)被视为一套很强的入门课程。
  • “检查你是否理解”部分中的图示评价两极分化:有人觉得很棒,也有人觉得令人困惑。

SQL 语义、正确性与可移植性

  • 有一些技术上的挑剔和更正:
    • 临时表通常是按连接作用域存在,并不一定在内存中。
    • 仅以“保留所有左表行,并用右表列或 NULL 填充”来定义左外连接,被认为不完整;当存在多个匹配时,必须提到行会被重复。
    • 全外连接与交叉连接被错误地等同了;它们是不同的。
    • 一些查询依赖 SQLite 特有功能(例如聚合上的 FILTER、引号规则),因此并非所有示例都能直接移植到 MySQL/SQL Server/Oracle。
  • 关于 ClickHouse 的争论:有人批评它缺乏更广泛的 SQL 标准特性;也有人反驳说没有哪个数据库完全符合标准,并强调 ClickHouse 的连接、反连接、UDF 等能力。
  • 时间序列/不等值连接也受到关注;在某些系统中被称为非等值连接或 “ASOF” 连接。

学习资源与练习工具

  • 提到了许多替代教程和练习网站:SQLZoo、Mode 的 SQL 教程、StrataScratch、各种“SQL mystery”/故事式课程,以及其他基于单页或笔记本的语言/技术资源。
  • 教程提供可下载数据库(penguins.db)这一点受到好评;一些人希望有更多练习数据源和交互式查询。
  • 有人分享了一个 macOS 应用,可以让用户在导入的 CSV 上运行 SQL,作为动手学习工具。

LLM 与 SQL

  • 多位评论者表示,使用 ChatGPT/LLM 可以非常成功地:
    • 根据自然语言规格生成复杂查询。
    • 重构或解释非常长、很乱的查询。
    • 处理棘手的 JSON 转换。
  • 也有人持怀疑态度,更偏好“数据库专业人员”级别的 SQL,而不是“数据科学家风格”的查询;还有人轻蔑地建议“直接用 ChatGPT”,不如去学 SQL。

围绕“数据科学家”标签的争论

  • 线程中延伸出一段关于当今“data scientist”含义的讨论:
    • 有人回忆起早期的预期:既要有很强的定量能力,也要有很强的软件工程能力(例如能够实现深度学习模型)。
    • 另一些人认为这个词从一开始就很模糊,与统计学家、分析师、ML 工程师和数据工程师有重叠。
    • 许多人指出,训练营以及把分析师岗位重新包装成“数据科学”使这个头衔被稀释了。
    • 还有几种分类法被提出,用编码、数学和领域专业知识水平来区分数据科学家、ML 工程师、数据工程师和分析师。
    • 有人坚持数据科学家应该非常擅长 SQL;也有人指出,在大型组织中,职责如今已分散到更多专业化角色中。