【背景】:某电商平台需要统计不同商品类别的销售情况以及相关客户的性别分布。 【原始表】: order_details(订单详情)表: order_id (订单 ID): 订单的唯一标识符 category_id (类别 ID): 商品所属类别 order_amount (订单金额): 订单的金额 order_date (订单日期): 订单生成的日期 customer_info(客户信息)表: customer_id (客户 ID): 客户的唯一标识符 order_id (订单 ID): 关联的订单 ID customer_gender (客户性别): 客户的性别(男女) 【要求】:根据上面这两个表格,查询每个商品类别在 2024 年 1 月 1 日至 2024 年 6 月 30 日期间的销售总额以及购买该类别商品的男性和女性客户数量。查询出来的数据按照类别 ID 升序排列。要求查询出来的表格的字段如下: category_id: 类别 ID。 total_sales: 总销售额。 male_customers: 男性客户数量。 female_customers: 女性客户数量。 【示例】 order_details(订单详情)表: customer_info(客户信息)表: 【按要求查询出来的表】 【解释】 订单表中有4笔订单记录,但是第4笔不在 2024 年 1 月 1 日至 2024 年 6 月 30 日之间,所以这条数据不查询出来,对于类别1的商品有2笔数据,总金额是500+400 = 900,这两笔订单都是男性购买,所以类别1的商品male_customers是2,female_customers:是0
示例1

输入

DROP TABLE IF EXISTS order_details;
DROP TABLE IF EXISTS customer_info;
-- 创建表
CREATE TABLE order_details (
    order_id INT PRIMARY KEY,
    category_id INT,
    order_amount DECIMAL(10, 2),
    order_date DATE
);

CREATE TABLE customer_info (
    customer_id INT PRIMARY KEY,
    order_id INT,
    customer_gender VARCHAR(2)
);

-- 插入数据
INSERT INTO order_details (order_id, category_id, order_amount, order_date)
VALUES (1, 1, 500.00, '2024-03-05'),
       (2, 2, 300.00, '2024-05-10'),
       (3, 1, 400.00, '2024-06-20'),
       (4, 2, 400.00, '2024-07-02');

INSERT INTO customer_info (customer_id, order_id, customer_gender)
VALUES (1, 1, '男'),
       (2, 2, '女'),
       (3, 3, '男'),
       (4, 4, '男');

select * from order_details;
select * from customer_info;

输出

category_id|total_sales|male_customers|female_customers
1|900.00|2|0
2|300.00|0|1
加载中...