题解 | 深入分析各款产品年总销售额与竞品的年度对比

描述

【背景】:OPPO 公司为了精准评估产品在 2023 年的市场表现,需要根据以下三个数据表,深入分析各款产品年总销售额与竞品的年度对比。

【原始表】:

oppo_products_detail(OPPO 产品详情)表:

  • product_id (产品 ID): 产品的唯一标识符
  • product_name (产品名称): 产品的名称
  • product_category (产品类别): 固定的(智能手机、平板电脑、智能手表)

sales_info(销售信息)表:

  • sale_id (销售 ID): 销售的唯一标识符
  • product_id (产品 ID): 所属产品的唯一标识符,用于关联 OPPO 产品详情表中的产品
  • sales_channel (销售渠道): 固定的(线上、线下)
  • region (地区): 产品销售的地区
  • quarter_1_sales_amount (第一季度销售额): 产品在该地区、该销售渠道的第一季度销售额
  • quarter_2_sales_amount (第二季度销售额): 产品在该地区、该销售渠道的第二季度销售额
  • quarter_3_sales_amount (第三季度销售额): 产品在该地区、该销售渠道的第三季度销售额
  • quarter_4_sales_amount (第四季度销售额): 产品在该地区、该销售渠道的第四季度销售额

competitor_analysis(竞品)表:

  • analysis_id (分析 ID): 竞品的唯一标识符
  • product_id (产品 ID): 对应的 OPPO 产品的唯一标识符,用于关联 OPPO 产品详情表中的产品
  • competitor_name (竞品名称): 竞品的名称
  • total_competitor_sales_amount_2023 (竞品 2023 年全年销售总金额): 竞品 2023 年全年的销售总金额

【要求】:根据上述表格,查询每个产品在不同地区、不同销售渠道下 2023 年的全年销售总额,以及与主要竞品 2023 年全年销售总金额的差值。结果按照产品 ID 升序排列。要求查询出来的表格的字段如下:

  • product_id (产品 ID): 对应的 OPPO 产品的唯一标识符,用于关联 OPPO 产品详情表中的产品
  • product_name (产品名称): 产品的名称
  • competitor_name (竞品名称): 竞品的名称
  • total_sales_amount_of_product(产品全年4个季度,全销售渠道的销售总金额): 产品 2023 年全年的销售总金额
  • sales_difference_with_competitor(产品和竞品的销售差值):2023年产品和竞品的销售差值

【示例】

oppo_products_detail(OPPO 产品详情)表:

sales_info(销售信息)表:

competitor_analysis(竞品)表:

【按照要求查询出来的表】

【解释】

按照上述示例中的数据,产品ID是1的产品全年总销售额 = 10000+15000+12000+18000+6000+20000+8000+10000 = 99000,竞品的销售总金额是80000,差值是19000

示例1

输入:

复制代码
DROP TABLE IF EXISTS oppo_products_detail ;
DROP TABLE IF EXISTS sales_info;
DROP TABLE IF EXISTS competitor_analysis;
-- 创建表
CREATE TABLE oppo_products_detail (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(50),
    product_category VARCHAR(20)
);

CREATE TABLE sales_info (
    sale_id INT PRIMARY KEY,
    product_id INT,
    sales_channel VARCHAR(10),
    region VARCHAR(20),
    quarter_1_sales_amount DECIMAL(10, 2),
    quarter_2_sales_amount DECIMAL(10, 2),
    quarter_3_sales_amount DECIMAL(10, 2),
    quarter_4_sales_amount DECIMAL(10, 2)
);

CREATE TABLE competitor_analysis (
    analysis_id INT PRIMARY KEY,
    product_id INT,
    competitor_name VARCHAR(50),
    total_competitor_sales_amount_2023 DECIMAL(10, 2)
);

-- 插入数据
INSERT INTO oppo_products_detail (product_id, product_name, product_category)
VALUES (1, 'Find X7', '智能手机'),
       (2, 'Pad Pro 2', '平板电脑');

INSERT INTO sales_info (sale_id, product_id, sales_channel, region, quarter_1_sales_amount, quarter_2_sales_amount, quarter_3_sales_amount, quarter_4_sales_amount)
VALUES (1, 1, '线上', '华北', 10000, 15000, 12000, 18000),
       (2, 2, '线下', '华南', 8000, 10000, 9000, 13000),
       (3, 2, '线下', '华东', 8000, 10000, 9000, 13000),
       (4, 1, '线下', '华东', 6000, 20000, 8000, 10000);

INSERT INTO competitor_analysis (analysis_id, product_id, competitor_name, total_competitor_sales_amount_2023)
VALUES (1, 1, 'Apple iPhone 14', 80000),
       (2, 2, 'Huawei MatePad', 60000);
select * from oppo_products_detail;
select * from sales_info;
select * from competitor_analysis;

复制输出:

复制代码
product_id|product_name|competitor_name|total_sales_amount_of_product|sales_difference_with_competitor
1|Find X7|Apple iPhone 14|99000.00|19000.00
2|Pad Pro 2|Huawei MatePad|80000.00|20000.00
sql 复制代码
with t1 as (
    select distinct sales_info.product_id,sales_channel,region,quarter_1_sales_amount,sum(quarter_1_sales_amount) over  (partition by sales_info.product_id) as t11
         ,sum(total_competitor_sales_amount_2023) over (partition by sales_info.product_id) as t12
    ,product_name,competitor_name
    from sales_info join oppo_products_detail on sales_info.product_id =oppo_products_detail.product_id
    join competitor_analysis on sales_info.product_id=competitor_analysis.product_id
 
), t2 as(
   select distinct sales_info.product_id,sales_channel,region,quarter_2_sales_amount,sum(quarter_2_sales_amount) over  (partition by sales_info.product_id) as t21
,product_name,competitor_name,total_competitor_sales_amount_2023 ,sum(total_competitor_sales_amount_2023) over (partition by sales_info.product_id) as t22
 
    from sales_info join oppo_products_detail on sales_info.product_id =oppo_products_detail.product_id
    join competitor_analysis on sales_info.product_id=competitor_analysis.product_id
    )
,t3 as (
       select distinct sales_info.product_id,sales_channel,region,quarter_3_sales_amount,sum(quarter_3_sales_amount) over  (partition by sales_info.product_id) as t31
,product_name,competitor_name,total_competitor_sales_amount_2023 ,sum(total_competitor_sales_amount_2023) over (partition by sales_info.product_id) as t32
 
    from sales_info join oppo_products_detail on sales_info.product_id =oppo_products_detail.product_id
    join competitor_analysis on sales_info.product_id=competitor_analysis.product_id
 
    ),t4 as (
    select distinct sales_info.product_id,sales_channel,region,quarter_4_sales_amount,sum(quarter_4_sales_amount) over  (partition by sales_info.product_id) as t41
,product_name,competitor_name,total_competitor_sales_amount_2023 ,sum(total_competitor_sales_amount_2023) over (partition by sales_info.product_id) as t42
 
    from sales_info join oppo_products_detail on sales_info.product_id =oppo_products_detail.product_id
    join competitor_analysis on sales_info.product_id=competitor_analysis.product_id
 
)
    ,t5 as (
        select  distinct t1 .product_id,t1.product_name,t1.competitor_name,t11+t21+t31+t41 as total_sales_amount_of_product,t2.total_competitor_sales_amount_2023
from
 
t1 join t2 on t1.product_id=t2.product_id
    join  t3 on t1.product_id=t3.product_id
join t4 on t4.product_id=t1.product_id
)
 
select product_id,product_name,competitor_name,total_sales_amount_of_product,(total_sales_amount_of_product-t5.total_competitor_sales_amount_2023) as sales_difference_with_competitor
from t5
相关推荐
EQUINOX137 分钟前
【论文精读】| CLIP精读
大数据·人工智能
维吉斯蔡1 小时前
【VS Code / Cursor】文件夹右键快捷打开与文件类型自动关联
开发语言·程序人生·学习方法
一米阳光86611 小时前
软考(中级)软件设计师核心笔记(3)数据库系统——概念、数据库设计
数据库·笔记·职场发展·软考·软件设计师
奈斯先生Vector2 小时前
告别工具碎片化:基于 Nano Banana 全模态 AI 聚合架构搭建“文本-图像-视频”自动化协同生产线
运维·数据库·人工智能·架构·自动化·aigc·音视频
微三云 - 廖会灵 (私域系统开发)2 小时前
消费即资产:积分增值异业联盟商业模式完整拆解(附落地逻辑、合规方案与盈利模型)
大数据·人工智能
老白说数智化升级2 小时前
从一次改善到持续进化,AI如何沉淀制造现场的运营知识?
大数据·人工智能·制造
小也说互联网3 小时前
2026年|正规靠谱外贸独立站建站渠道全景解析
大数据·外贸独立站·独立站搭建·谷歌seo优化·外贸建站·谷歌建站服务商推荐·外贸出海企业必看
只说证事3 小时前
电子商务专业考证能找到哪些工作
大数据
luj_17683 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
always_TT3 小时前
【Python 日志记录:logging 模块入门】
开发语言·python·php