感悟:以终为始是久经沙场的数据民工的必备素质,当某一个业务问题提出的时候,大脑中的数据结构模型就已经形成了。
对于任何以销售为主业的公司来说,了解自身公司的销售趋势是不可或缺的,基于对历史销售数据的了解,公司能够清楚地了解到店铺的销售状况以及合理地定制销售目标而达进公司销售的目的。
分析目的:
- 了解店铺的销售情况
- 合理制定销售目标
分析指标:
- 各个季度每个供应商的总销售额
- 依照上年度以及历史年度的销售额制定销售目标
问题驱动: 为每个供应商计算每年的各个季度的销售额
分析目标细化:
- 最终返回结果:供应商信息以及销售额(输出的结果必须包含的四个维度的信息: 供应商号码 + 销售额 + 年度 + 季度)
- 聚合类别: 每年各个季度
------------- HMB --------------
案例拆解:
- 选取最终结果(SELECT)- 供应商信息以及销售额
- 供应商每年各个季度的销售额计算:
1.供应商每年各季度销售额 = 供应商提供的产品每年各季度总销售额之和(GROUP BY / SUM)
2.单个产品每年各季度的总销售额 = 每年各季度的产品订单记录的消费之和(GROUP BY / SUM)
3.订单记录的年份季度信息 = 订单日期 所属年份以及季度(**YEAR / CASE WHEN **)
数据定位:
- 提供各个供应商详细信息的 供应商信息表
- 提供产品与供应商之间联系的供应商信息表
- 计算各个产品总销售额的订单信息表
- 提供产品详细日期信息的订单信息表
详细解答步骤与相关代码:
# 1.计算每个订单的年份及季度信息
SELECT
`订单号码`,
`订单日期`,
# 新增辅助列
YEAR(`订单日期`) AS '年份',
CASE
WHEN MONTH(`订单日期`) >= 10 THEN 4
WHEN MONTH(`订单日期`) >= 7 THEN 3
WHEN MONTH(`订单日期`) >= 4 THEN 2
ELSE 1
END AS '季度' # 新建的字段 `` or ''都没关系
FROM `订单信息`
OUTPUT:
# 2.计算每样产品每年度每季度销售额
SELECT
b.`产品号码`,
a.`年份`,
a.`季度`,
SUM(`产品单价`* `购买数量`) AS `产品销售额`
FROM `订单明细` AS b
INNER JOIN
(
# 计算每个订单的年份及季度信息
SELECT
`订单号码`,
`订单日期`,
# 新增辅助列
YEAR(`订单日期`) AS '年份',
CASE
WHEN MONTH(`订单日期`) >= 10 THEN 4
WHEN MONTH(`订单日期`) >= 7 THEN 3
WHEN MONTH(`订单日期`) >= 4 THEN 2
ELSE 1
END AS '季度' # 新建的字段 `` or ''都没关系
FROM `订单信息`
) AS a
ON a.`订单号码` = b.`订单号码`
GROUP BY `产品号码`,`年份`,`季度`
OUTPUT:
# 3.计算供应商每年度每季度的总销售额
SELECT
d.`供应商号码`,
c.`年份`,
c.`季度`,
SUM(c.`产品销售额`) AS `供应商每年各季度总销售额`
FROM `产品信息` AS d
INNER JOIN
(
# 计算每样产品每年度每季度销售额
SELECT
b.`产品号码`,
a.`年份`,
a.`季度`,
SUM(`产品单价`* `购买数量`) AS `产品销售额`
FROM `订单明细` AS b
INNER JOIN
(
# 计算每个订单的年份及季度信息
SELECT
`订单号码`,
`订单日期`,
# 新增辅助列
YEAR(`订单日期`) AS '年份',
CASE
WHEN MONTH(`订单日期`) >= 10 THEN 4
WHEN MONTH(`订单日期`) >= 7 THEN 3
WHEN MONTH(`订单日期`) >= 4 THEN 2
ELSE 1
END AS '季度' # 新建的字段 `` or ''都没关系
FROM `订单信息`
) AS a
ON a.`订单号码` = b.`订单号码`
GROUP BY `产品号码`,`年份`,`季度`
) AS c
ON c.`产品号码` = d.`产品号码`
GROUP BY `供应商号码`,`年份`,`季度`
OUTPUT:
# 4表拼接练习完成:大功告成
SELECT
e.`供应商号码`,
f.`公司`,
e.`年份`,
e.`季度`,
e.`供应商每年各季度总销售额`
FROM `供应商信息` AS f
INNER JOIN
(
# 计算供应商每年度每季度的总销售额
SELECT
d.`供应商号码`,
c.`年份`,
c.`季度`,
SUM(c.`产品销售额`) AS `供应商每年各季度总销售额`
FROM `产品信息` AS d
INNER JOIN
(
# 计算每样产品每年度每季度销售额
SELECT
b.`产品号码`,
a.`年份`,
a.`季度`,
SUM(`产品单价`* `购买数量`) AS `产品销售额`
FROM `订单明细` AS b
INNER JOIN
(
# 计算每个订单的年份及季度信息
SELECT
`订单号码`,
`订单日期`,
# 新增辅助列
YEAR(`订单日期`) AS '年份',
CASE
WHEN MONTH(`订单日期`) >= 10 THEN 4
WHEN MONTH(`订单日期`) >= 7 THEN 3
WHEN MONTH(`订单日期`) >= 4 THEN 2
ELSE 1
END AS '季度' # 新建的字段 `` or ''都没关系
FROM `订单信息`
) AS a
ON a.`订单号码` = b.`订单号码`
GROUP BY `产品号码`,`年份`,`季度`
) AS c
ON c.`产品号码` = d.`产品号码`
GROUP BY `供应商号码`,`年份`,`季度`
) AS e
ON e.`供应商号码` = f.`供应商号码`
OUTPUT:
——— ———— ———— ———— —————— —————— —————— —————— —————— —————— —————
放进EXCEL或其他可视化工具 进行可视化……