电商销售与业绩分析 SQL 示例

显示原文
-- 1. 数据库结构
CREATE TABLE 客户 (
客户ID INT PRIMARY KEY,
姓名 VARCHAR(100),
州名 CHAR(2)
);
CREATE TABLE 订单 (
订单ID INT PRIMARY KEY,
客户ID INT,
订单日期 DATE,
状态 VARCHAR(50),
FOREIGN KEY (客户ID) REFERENCES 客户(客户ID)
);
CREATE TABLE 订单项 (
项目ID INT PRIMARY KEY,
订单ID INT,
产品 VARCHAR(100),
数量 INT,
单价 DECIMAL(10,2),
FOREIGN KEY (订单ID) REFERENCES 订单(订单ID)
);
-- 2. 测试数据
INSERT INTO 客户 VALUES (1, 'Ana Silva', 'SP'), (2, 'Bruno Souza', 'MG'), (3, 'Carla Costa', 'RJ');
INSERT INTO 订单 VALUES (101, 1, '2026-01-15', '已完成'), (102, 2, '2026-01-16', '已完成'), (103, 1, '2026-01-17', '已取消');
INSERT INTO 订单项 VALUES (1, 101, '笔记本电脑', 1, 3500.00), (2, 101, '鼠标', 2, 50.00), (3, 102, '键盘', 1, 150.00);
-- 3. 报表查询:按客户和州统计的总销售额(仅计算已完成订单)
SELECT
c.姓名 AS 客户,
c.州名,
COUNT(DISTINCT p.订单ID) AS 总订单数,
SUM(i.数量 * i.单价) AS 总消费金额
FROM 客户 c
JOIN 订单 p ON c.客户ID = p.客户ID
JOIN 订单项 i ON p.订单ID = i.订单ID
WHERE p.状态 = '已完成'
GROUP BY c.客户ID, c.姓名, c.州名
ORDER BY 总消费金额 DESC;
参与讨论