京东 · SQL 查询 · 算法编程题
京东 SQL 查询 时限 1 秒 / 256 MB

题目描述

假设你是一家电商平台的数据分析师,你有三个表格:orders、customers和products。
orders表格包含订单信息,包括order_id(订单ID)、customer_id(顾客ID)、product_id(产品ID)和order_date(订单日期)等字段。orders示例数据表如下:
图片
customers表格包含顾客信息,包括customer_id(顾客ID)和customer_name(顾客姓名)等字段。customers示例数据表如下:
图片
products表格包含产品信息,包括product_id(产品ID)和product_name(产品名称)等字段。products示例数据表如下:
图片
你的任务是编写一条SQL查询语句,找出每个顾客购买的最新产品名称,并按照顾客ID进行排序。
图片

样例共 1 组

样例 1
输入
drop table if exists customers;
-- 创建 customers 表
CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  customer_name VARCHAR(50)
);

drop table if exists products;
-- 创建 products 表
CREATE TABLE products (
  product_id INT PRIMARY KEY,
  product_name VARCHAR(50)
);

drop table if exists orders;
-- 创建 orders 表
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  customer_id INT,
  product_id INT,
  order_date DATE
);


-- 插入 customers 表数据
INSERT INTO customers (customer_id, customer_name)
VALUES
  (1, 'Alice'),
  (2, 'Bob'),
  (3, 'Charlie');

-- 插入 products 表数据
INSERT INTO products (product_id, product_name)
VALUES
  (1, 'iPhone'),
  (2, 'iPad'),
  (3, 'MacBook');

-- 插入 orders 表数据
INSERT INTO orders (order_id, customer_id, product_id, order_date)
VALUES
  (1, 1, 1, '2022-01-01'),
  (2, 1, 2, '2022-01-02'),
  (3, 2, 1, '2022-02-01'),
  (4, 2, 3, '2022-02-02'),
  (5, 3, 2, '2022-03-01');
输出
customer_id|customer_name|latest_order
1|Alice|iPad
2|Bob|MacBook
3|Charlie|iPad

算法解析依据充分

考点:SQL 查询

限制 1 秒 / 256MB | SQL 题

题目画像

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

解题思路

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

建议步骤

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

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

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

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

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