【背景】 一家电商平台需要每月复盘用户的下单情况。请统计每位用户在 2024 年 2 月的下单概览(仅统计 2 月份订单),用于运营复盘与用户分层。 【原始表】 customers(用户)表 customer_id INT 主键 customer_name VARCHAR 用户名 orders(订单)表 order_id INT 主键 customer_id INT 外键 → customers.customer_id order_date DATE 下单日期 order_items(订单商品明细)表 order_id INT 外键 → orders.order_id sku VARCHAR 商品编码 qty INT 购买数量 price DECIMAL(10,2) 商品单价 【要求】 请输出每位用户在 2024 年 2 月份的如下指标(如果 2 月没有下单,该用户也要展示,相关数值按 0空处理),并按“总金额降序、customer_id 升序”排序: customer_id:用户ID customer_name:用户名 feb_2024_order_count:2 月订单数(去重订单数) feb_2024_total_amount:2 月订单总金额(sum(qty×price),保留两位小数) feb_2024_avg_order_amount:2 月平均每单金额(总金额订单数,保留两位小数;无订单为 0.00) feb_2024_first_order_date:2 月首次下单日期(无订单为空) feb_2024_last_order_date:2 月最后下单日期(无订单为空) 【示例输入】 customers +-------------+---------------+ customer_id customer_name +-------------+---------------+ 1 Alice 2 Bob 3 Carol +-------------+---------------+ orders +----------+-------------+------------+ order_id customer_id order_date +----------+-------------+------------+ 101 1 2024-02-02 102 1 2024-02-18 103 2 2024-02-05 104 2 2024-01-12 +----------+-------------+------------+ order_items +----------+------+-----+-------+ order_id sku qty price +----------+------+-----+-------+ 101 A 2 10.00 101 B 1 15.00 102 A 1 10.00 103 C 3 8.00 104 D 2 7.00 +----------+------+-----+-------+ 【示例输出】 +-------------+---------------+----------------------+------------------------+--------------------------+---------------------------+--------------------------+ customer_id customer_name feb_2024_order_count feb_2024_total_amount feb_2024_avg_order_amount feb_2024_first_order_date feb_2024_last_order_date +-------------+---------------+----------------------+------------------------+--------------------------+---------------------------+--------------------------+ 1 Alice 2 45.00 22.50 2024-02-02 2024-02-18 2 Bob 1 24.00 24.00 2024-02-05 2024-02-05 3 Carol 0 0.00 0.00 NULL NULL +-------------+---------------+----------------------+------------------------+--------------------------+---------------------------+--------------------------+
示例1
输入
DROP TABLE IF EXISTS order_items;
DROP TABLE IF EXISTS orders;
DROP TABLE IF EXISTS customers;
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(100)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE
);
CREATE TABLE order_items (
order_id INT,
sku VARCHAR(50),
qty INT,
price DECIMAL(10,2)
);
INSERT INTO customers VALUES
(1,'Alice'),(2,'Bob'),(3,'Carol');
INSERT INTO orders VALUES
(101,1,'2024-02-02'),
(102,1,'2024-02-18'),
(103,2,'2024-02-05'),
(104,2,'2024-01-12');
INSERT INTO order_items VALUES
(101,'A',2,10.00),(101,'B',1,15.00),
(102,'A',1,10.00),
(103,'C',3, 8.00),
(104,'D',2, 7.00);
输出
customer_id|customer_name|feb_2024_order_count|feb_2024_total_amount|feb_2024_avg_order_amount|feb_2024_first_order_date|feb_2024_last_order_date
1|Alice|2|45.00|22.50|2024-02-02|2024-02-18
2|Bob|1|24.00|24.00|2024-02-05|2024-02-05
3|Carol|0|0.00|0.00|None|None
加载中...