SQL面试经典问题(一)

360影视 欧美动漫 2025-05-27 09:14 2

摘要:以下是三个精心挑选的经典 SQL 面试问题及其详细解决方案,涵盖了数据分析、排序限制和数据清理等常见场景。这些问题旨在考察 SQL 的核心技能,适用于初学者到高级开发者的面试准备。每个问题均包含清晰的问题描述、示例数据、标准的 SQL 查询以及简明的解释,确保

以下是三个精心挑选的经典 SQL 面试问题及其详细解决方案,涵盖了数据分析、排序限制和数据清理等常见场景。这些问题旨在考察 SQL 的核心技能,适用于初学者到高级开发者的面试准备。每个问题均包含清晰的问题描述、示例数据、标准的 SQL 查询以及简明的解释,确保代码简洁高效且易于理解:

问题 1:查找重复记录

给定一个 employees 表,包含员工 ID 和姓名,找出姓名重复的员工记录,并返回重复的姓名及其出现次数。

解释

使用 GROUP BY name 按姓名分组。COUNT(*) 计算每个姓名的出现次数。HAVING COUNT(*) > 1 筛选出重复的姓名(出现次数大于1)。

问题 2:查找第 N 高的薪水

在 salaries 表中,查找第 N 高的薪水(例如第 2 高)。如果没有第 N 高薪水,返回 NULL。

解释

DISTINCT salary 去除重复薪水。ORDER BY salary DESC 按薪水降序排序。LIMIT 1 OFFSET 1 跳过第一条记录(最高薪水),取第二条(第 2 高薪水)。如果需要第 N 高,调整 OFFSET 为 N-1。

备选方案(支持更复杂场景)

解释

在 users 表中,存在重复的 email 记录,删除重复记录,仅保留 ID 最小的记录。

解释

SELECT MIN(id) ... GROUP BY email 为每个唯一 email 保留最小的 ID。DELETE ... WHERE id NOT IN 删除不在此最小 ID 列表中的记录。

备选方案(使用 ROW_NUMBER)

解释

ROW_NUMBER OVER (PARTITION BY email ORDER BY id) 为每个 email 分组,按 ID 分配行号。删除信号大于 1 的记录(保留每组第一条)。

这三个问题覆盖了 SQL 中常见的操作:聚合查询(重复记录)、排序与限制(第 N 高)、数据清理(删除重复)。解决方案使用标准 SQL,兼容大多数数据库(如 MySQL、PostgreSQL)。

来源:数据分析精选

相关推荐