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

描述

【背景】:电商平台需要分析每个商品在不同时间段的销售情况,现在需要你根据下面三个数据表,查询出每个商品在 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
相关推荐
CoovallyAIHub28 分钟前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub2 小时前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub2 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
CoovallyAIHub2 小时前
开源:YOLO最强对手?D-FINE目标检测与实例分割框架深度解析
人工智能·算法·github
CoovallyAIHub2 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github
刀法如飞2 小时前
程序员必须知道的核心算法思想
算法·编程开发·算法思想
Nyarlathotep01133 小时前
事务隔离级别
sql·mysql
悟空聊架构3 小时前
基于KaiwuDB在游乐场“刷卡+投币”双模消费系统中的落地实践
数据库·后端·架构
IvorySQL3 小时前
PostgreSQL 技术日报 (3月4日)|硬核干货 + 内核暗流一网打尽
数据库·postgresql·开源
徐小夕4 小时前
pxcharts Ultra V2.3更新:多维表一键导出 PDF,渲染兼容性拉满!
vue.js·算法·github