题解 | 分析每个商品在不同时间段的销售情况

描述

【背景】:电商平台需要分析每个商品在不同时间段的销售情况,现在需要你根据下面三个数据表,查询出每个商品在 2024 年第二季度的销售总额、在不同类别中的销售排名以及所属供应商。

【原始表】:

product_info(商品信息)表:

  • product_id (商品 ID): 商品的唯一标识符
  • product_name (商品名称): 商品的名称
  • category (类别): 商品所属的类别

order_info(订单信息)表:

  • order_id (订单 ID): 订单的唯一标识符
  • product_id (商品 ID): 商品的唯一标识符,用于关联商品表中的商品
  • order_date (订单日期): 下单日期
  • total_amount (订单总额): 订单的总金额

supplier_info(供应商信息)表:

  • supplier_id (供应商 ID): 供应商的唯一标识符
  • product_id (商品 ID): 商品的唯一标识符,用于关联商品表中的商品
  • supplier_name (供应商名称): 供应商的名称

【要求】:根据上面这三个表格,查询每个商品的销售情况,包含的字段:商品 ID、商品名称、该商品在 2024 年第二季度的销售总额,该商品在所属类别的销售排名,所属供应商。查询出来的数据按照商品 ID 升序排列。要求查询出来的表格的字段如下:

  • product_id: 商品的唯一标识符。
  • product_name: 商品的名称。
  • q2_2024_sales_total: 2024 年第二季度的销售总额。4、5、6月份属于第二季度
  • category_rank: 在所属类别的销售排名。
  • supplier_name: 所属供应商。

【示例】

product_info(商品信息)表:

order_info(订单信息)表:

supplier_info(供应商信息)表:

【按要求查询出来的表】

【解释】

上述示例中,产品ID1、2、3、4的产品都是2024年第2季度产生了订单,产品A产生的订单总金额是1100,产品ID5产品E在2024年第2季度没有产生订单,产品A和产品E都是Clothing类别,所以产品A排名1,产品E排名2且销售总金额是0;

示例1

输入:

复制代码
DROP TABLE IF EXISTS product_info;
DROP TABLE IF EXISTS order_info;
DROP TABLE IF EXISTS supplier_info;

-- 创建表
CREATE TABLE product_info (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(50),
    category VARCHAR(50)
);

CREATE TABLE order_info (
    order_id INT PRIMARY KEY,
    product_id INT,
    order_date DATE,
    total_amount DECIMAL(10, 2)
    
);

CREATE TABLE supplier_info (
    product_id INT PRIMARY KEY,
    supplier_id INT ,
    supplier_name VARCHAR(50)
   
);

-- 插入数据
INSERT INTO product_info (product_id, product_name, category)
VALUES (1, 'Product A', 'Electronic Products'),
       (2, 'Product B', 'Clothing'),
       (3, 'Product C', 'Clothing'),
       (4, 'Product D', 'Clothing'),
       (5, 'Product E', 'Electronic Products');

INSERT INTO order_info (order_id, product_id, order_date, total_amount)
VALUES (1, 1, '2024-04-01', 500),
       (2, 1, '2024-05-01', 600),
       (3, 2, '2024-04-01', 400),
       (4, 3, '2024-05-01', 300),
       (5, 4, '2024-05-01', 200),
       (6, 5, '2024-07-01', 300);

INSERT INTO supplier_info (supplier_id, product_id, supplier_name)
VALUES (1, 1, 'Supplier A'),
       (2, 2, 'Supplier B'),
       (2, 3, 'Supplier B'),
       (2, 4, 'Supplier B'),
       (2, 5, 'Supplier B');


select * from product_info;
select * from order_info;
select * from supplier_info;

复制输出:

复制代码
product_id|product_name|q2_2024_sales_total|category_rank|supplier_name
1|Product A|1100.00|1|Supplier A
2|Product B|400.00|1|Supplier B
3|Product C|300.00|2|Supplier B
4|Product D|200.00|3|Supplier B
5|Product E|0.00|2|Supplier B
sql 复制代码
select distinct product_id,product_name ,q2_2024_sales_total , dense_rank() over ( partition by category order by q2_2024_sales_total desc ) as category_rank,supplier_name
from (
    select distinct order_info.product_id,product_name, if(order_date>'2024-06-30'or order_date<'2024-04-01',0,sum(total_amount) over (partition by product_id) )as q2_2024_sales_total,
           supplier_name,order_date,category
    from product_info join order_info
    on product_info.product_id=order_info.product_id
    join supplier_info on product_info.product_id=supplier_info.product_id

     ) as t
order by product_id
相关推荐
TsingtaoAI13 小时前
3D高斯泼溅技术发展及其在具身智能领域的应用综述
人工智能·算法·ai·具身智能·高斯泼溅
atunet13 小时前
关于图算法中的连通分量检测与最小割问题7
算法
z1234567898613 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD13 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
心运软件14 小时前
银行客户流失预测(Python 完整实战)
算法
邪神与厨二病14 小时前
牛客周赛 Round 153
python·算法
TlSfoward15 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记15 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发15 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB15 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库