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

题目描述

【题目要求】
假设你有两个表:orders 表是订单信息表和 customer表是顾客信息表
orders 表包含以下字段:
·
order_id:订单的唯一标识符。
·
customer_id:顾客的唯一标识符。
·
order_date:订单的日期。
·
total_amount:订单的总金额。
图片
customers 表包含以下字段:
·
customer_id:顾客的唯一标识符。
·
customer_name:顾客的姓名。
·
city:顾客所在的城市。
图片
请你编写一个SQL查询语句,查询每个城市的用户的订单总金额,并按照总金额的降序进行排序(当金额出现一致的情况,按照城市的名称升序排列)。
【解释】
比如:New York城市,只有一个Alice顾客,该顾客共消费2笔分别是order_id是1和2的两个订单,总金额是100+200 = 300
图片

样例共 1 组

样例 1
输入
drop table if exists  orders ;  
CREATE TABLE orders (
  order_id INT,
  customer_id INT,
  order_date DATE,
  total_amount DECIMAL(10, 2)
);
drop table if exists  customers ;  
CREATE TABLE customers (
  customer_id INT,
  customer_name VARCHAR(50),
  city VARCHAR(50)
);
INSERT INTO orders (order_id, customer_id, order_date, total_amount)
VALUES
  (1, 1, '2023-01-01', 100.00),
  (2, 1, '2023-02-01', 200.00),
  (3, 2, '2023-03-01', 150.00),
  (4, 2, '2023-04-01', 300.00),
  (5, 3, '2023-05-01', 250.00);

INSERT INTO customers (customer_id, customer_name, city)
VALUES
  (1, 'Alice', 'New York'),
  (2, 'Bob', 'Los Angeles'),
  (3, 'Catherine', 'Chicago');
输出
city|total_order_amount
Los Angeles|450.00
New York|300.00
Chicago|250.00

算法解析依据一般

考点:排序

限制 1 秒 / 256MB | SQL 题

题目画像

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

解题思路

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

建议步骤

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

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

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

本题来源:2024年春招-京东-技术通用岗位-第四批笔试。

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