京东 · 排序 · 算法编程题
京东 排序 时限 1 秒 / 256 MB

题目描述

假设有一个employees表,里面记录了公司里职工的信息。
包括职工id、职工姓名、部门、薪水、入职日期。
图片
请编写一个SQL查询,找到每个部门里排名top2的薪水信息,返回结果按照部门和薪水降序排列。
示例输出如下:
图片

样例共 1 组

样例 1
输入
drop table if exists employees;
CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(50),
    department VARCHAR(50),
    salary DECIMAL(10, 2),
    hire_date DATE
);



INSERT INTO employees (employee_id, employee_name, department, salary, hire_date)
VALUES
    (1, 'John Doe', 'Sales', 5000.00, '2022-01-01'),
    (2, 'Jane Smith', 'Sales', 5000.00, '2022-02-01'),
    (3, 'Smith', 'Sales', 5000.00, '2022-02-01'),
    (4, 'Michael Johnson', 'Sales', 4800.00, '2022-03-01'),
    (5, 'David Brown', 'HR', 4000.00, '2022-01-01'),
    (6, 'Jennifer Davis', 'HR', 4200.00, '2022-02-01'),
    (7, 'Davis', 'HR', 4200.00, '2022-02-01'),
    (8, 'Robert Wilson', 'HR', 3800.00, '2022-03-01'),
    (9, 'Emily Thompson', 'Finance', 5500.00, '2022-01-01'),
    (10, 'Daniel Lee', 'Finance', 5200.00, '2022-02-01'),
    (11, 'Olivia Harris', 'Finance', 5300.00, '2022-03-01');
输出
department|employee_name|salary
Finance|Emily Thompson|5500.00
Finance|Olivia Harris|5300.00
HR|Jennifer Davis|4200.00
HR|Davis|4200.00
Sales|John Doe|5000.00
Sales|Jane Smith|5000.00
Sales|Smith|5000.00

算法解析依据一般

考点:排序

限制 1 秒 / 256MB | SQL 题

题目画像

  • 源站时限:1 秒(牛客口径,非本题专属门槛)

解题思路

本题是 SQL 题:给出建表语句与目标结果,要求写出查询语句。

建议步骤

  1. 先读样例里的建表语句,理清有哪几张表、每张表的字段含义与关联键。
  2. 明确输出字段与输出顺序——排序、列名、小数位数通常都是得分点。
  3. 需要「按某维度统计」时用 GROUP BY 聚合,过滤分组结果用 HAVING
  4. 需要排名或累计时用窗口函数(ROW_NUMBER()RANK()SUM() OVER)。
  5. 拿样例数据在本地跑一遍,确认输出与样例逐行一致。

易错点:排序方向写反;GROUP BY 后选了非分组字段;没做 ROUND 保留小数;空值参与聚合。

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2023年秋招-京东-技术通用岗位-第九批笔试。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解