【背景】:电商平台需要对商品的销售情况进行深度分析,以优化运营策略。现根据以下三个数据表,查询相关销售数据。 【原始表】: products(商品)表: · product_id (商品 ID): 商品的唯一标识符 · product_name (商品名称): 商品的名称 · category (类别): 商品所属的类别,固定的(电子、服装、家居) sales(销售)表: · sale_id (销售 ID): 销售的唯一标识符 · product_id (商品 ID): 所属商品的唯一标识符,用于关联商品表中的商品 · sale_date (销售日期): 销售日期 · quantity (销售数量): 销售的商品数量 · price (销售单价): 商品的销售单价 customer_info(客户信息)表: · sale_id (销售 ID): 销售的唯一标识符 · customer_id (客户 ID): 客户的唯一标识符 · age_group (年龄组): 固定的(青年、中年、老年) · gender (性别): 固定的(男、女) 【要求】:查询每个商品类别下,不同年龄组和性别的客户购买商品的总销售额,并计算每个商品类别在不同年龄组占该类别总购买量的比例。结果按照商品类别升序排列。要求查询出来的表格的字段如下: · product_category: 商品类别。 · age_group: 年龄组。 · total_sales_amount: 总销售额。 · purchase_percentage: 购买量占比。(round保留2位小数) 【示例】 products(商品)表:

sales(销售)表:

customer_info(客户信息)表:

【按要求查询出来的表】

【解释】 上述示例中产品ID1和4号产品都属于电子产品,购买这两个产品的两笔销售记录中分别一个是中年一个青年购买的,中年购买的总金额是105000,青年购买的是60000,中年占比105000/(105000+60000) 约等于 0.64,青年占比60000/(105000+60000) 约等于 0.36
DROP TABLE IF EXISTS products;
DROP TABLE IF EXISTS sales;
DROP TABLE IF EXISTS customer_info;
-- 创建表
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(50),
category VARCHAR(20)
);
CREATE TABLE sales (
sale_id INT PRIMARY KEY,
product_id INT,
sale_date DATE,
quantity INT,
price DECIMAL(10, 2)
);
CREATE TABLE customer_info (
sale_id INT PRIMARY KEY,
customer_id INT ,
age_group VARCHAR(10),
gender VARCHAR(10)
);
-- 插入数据
INSERT INTO products (product_id, product_name, category)
VALUES (1, 'iPhone 14', '电子'),
(2, '时尚连衣裙', '服装'),
(3, '衬衫S10120', '服装'),
(4, 'ipad10', '电子');
INSERT INTO sales (sale_id, product_id, sale_date, quantity, price)
VALUES (1, 1, '2024-07-01', 10, 6000),
(2, 2, '2024-07-02', 5, 200),
(3, 3, '2024-07-03', 10, 100),
(4, 4, '2024-07-04', 15, 7000);
INSERT INTO customer_info ( sale_id, customer_id,age_group, gender)
VALUES (1, 1, '青年', '男'),
(2, 2, '中年', '女'),
(3, 2, '中年', '女'),
(4, 2, '中年', '女');
select * from products;
select * from sales;
select * from customer_info;product_category|age_group|total_sales_amount|purchase_percentage 服装|中年|2000.00|1.00 电子|中年|105000.00|0.64 电子|青年|60000.00|0.36
考点:排序
限制 1 秒 / 256MB | 核心代码模式(实现给定函数)
参考方向:排序
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1
DROP TABLE IF EXISTS products; / DROP TABLE IF EXISTS sales; / DROP TABLE IF EXISTS customer_info; / / -- 创建表 / CREATE TABLE products ( / product_category|age_group|total_sales_amount|purchase_percentage / 服装|中年|2000.00|1.00 / 电子|中年|10500解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-京东-测试岗-第1批笔试。