当前位置:网站首页>一文带你了解如何用SQL处理周报数据
一文带你了解如何用SQL处理周报数据
2022-07-23 01:10:00 【猴子数据分析】

【题目】
某公司数据库有三张表,周度销售表、店铺信息表、日销售明细表。
表一:周度销售表记录了每个自然周全国店铺的销售信息,字段包含了周、店铺代码、吊牌金额、销售金额。

表二:店铺信息表记录店铺所在的区域,店铺对应的层级关系及业务类型,字段包含店铺代码、区域、上级客户简称、业务类型。
表三:日销售明细表记录了每天全国不同区域的店铺销售商品的金额,客户性质及商品信息,字段包含区域、上级客户简称、上级客户代码、客户性质、店铺代码、销售日期、销售金额、商品编码。

业务需求:
1.对于不同区域、业务类型的吊牌金额、销售金额进行汇总(时间范围202201-202205周。
2.抽取区域为华东区、华中区、华西区、华南区的,并且客户性质为自营的,2022年3月及同期的日销售数据。
【解题思路】
1.对于不同区域、业务类型的吊牌金额、销售金额进行汇总(时间范围202201-202205周)
我们先来把这个业务需求翻译成大白话:
1)查询结果需要的字段是区域、业务类型、吊牌金额、销售金额
2)筛选时间周为202201-202205
3)对于不同区域、业务类型的吊牌金额、销售金额进行汇总
1)查询结果需要的字段是区域、业务类型、吊牌金额、销售金额
吊牌金额、销售金额在周度销售表中,区域、业务类型在店铺信息表中,涉及到两个表的字段,所以需要进行多表联结。
观察两个表,得知两表的名称相同且有关联的字段为店铺代码,用店铺代码联结两张表。
使用哪种联结呢?拿出《猴子 从零学会SQL》里面的多表联结图。
因为需要得到每个店铺代码对应的业务类型,所以用左连接保留周度销售表中所有的销售数据。
SQL书写如下:
select *
from 周度销售表 a
left join 店铺信息表 b
on a.店铺代码 = b.店铺代码;2)筛选时间周为202201-202205,使用between 函数来筛选时间范围。
SQL书写如下:
select *
from 周度销售表 a
left join 店铺信息表 b
on a.店铺代码 = b.店铺代码
where 周 between 202201 and 202205;查询结果:

3)对于不同区域、业务类型的吊牌金额、销售金额进行汇总
业务需求仅显示吊牌金额和销售金额,我们使用分组汇总来对不同区域、业务类分组 (group by),对吊牌金额、销售金额进行汇总求和(求和函数sum)
SQL书写如下:
select 区域,
业务类型,
sum(a.吊牌金额) AS "总吊牌金额",
sum(a.销售金额) AS "总销售金额"
from 周度销售表 a
left join 店铺信息表 b
on a.店铺代码 = b.店铺代码
where 周 between 202201 and 202205
group by 业务类型,区域;查询结果:

2、抽取区域为华东区、华中区、华西区、华南区的,并且客户性质为自营的,2022年3月及同期的日销售数据。
需求显示字段区域、客户性质、销售日期,日销售明细表都包含,现在只需要将客户性质为“自营”和时间为2022年3月及2021年3月(同期)数据显示即可。
SQL中使用date_format将日销售表中的销售日期格式设置为年月格式。

SQL书写如下:
select *
from 日销售明细表
where 区域 in (
"华东区",
"华中区",
"华西区",
"华南区" )
and 客户性质 = "自营"
and date_format(销售日期, '%Y-%m') between "2021-03" and "2022-03";查询结果:

【本题考点】
1.业务需求拆解为一个个问题,试着翻译成大白话,根据需求找出连接与突破点。
2.SQL中最常见的几种联结应该如何使用,学习参考猴子免费教程《图解SQL面试题》。
3.数据表中日期格式如果不是我们想要的呈现结果,学会date_format函数进行转化。


️点击「阅读原文」
免费报名 数据分析训练营
边栏推荐
- 【MySQL从入门到精通】【高级篇】(七)设计一个索引&InnoDB中的索引方案
- 博途PLC信号处理系列之限幅消抖滤波
- og seo
- 2302. 统计得分小于 K 的子数组数目-滑动数组-双百代码
- PMP备考心得 | 好的习惯、好的过程、好的结果
- [Huawei online battle service] how can new players make up frames when the client quits reconnection or enters the game halfway?
- In the era of Internet of everything, see how IOT test meets the challenge of "core"
- 购买股票开户安全吗,会亏钱吗?
- DOM series prohibit selected text and prohibit right-click menu
- 【面试:并发篇21:多线程:活跃性】死锁、活锁、饥饿
猜你喜欢
![[ManageEngine] six essential functions of network configuration management](/img/dc/df353da0e93e4d936c39a39493b508.png)
[ManageEngine] six essential functions of network configuration management

Airserver third party projection software v7.3.0 Chinese Version (airplay terminal utility)

35岁程序员,早到的中年危机

Mathematical modeling -- graph and network models and methods (II)

【华为联机对战服务】客户端退出重连或中途进入游戏,新玩家如何补帧?

Advantages of implementing automatic network performance monitoring

BGP机房的优点
![[C language] file operation](/img/d3/5e5ce369dd3315089b529cf69b36c0.png)
[C language] file operation

真人踩過的坑,告訴你避免自動化測試常犯的10個錯誤

驱动单片机硬件调试器的一些开源库总结(包含stlink调试器)
随机推荐
Huawei applications have called the checkappupdate interface. Why is there no prompt for version update in the application
PMP备考心得 | 好的习惯、好的过程、好的结果
Mathematical modeling -- graph and network models and methods (II)
关系表达式 大于> 小于< 全等=== Nan isNan() 逻辑运算符 双感叹号!! && || % ++ -- 短路计算 赋值表达式 快捷运算符 顺序 闰年
Go-Excelize API源码阅读(五)—— Close()、NewSheet()
求解最大公约数和最小公倍数
AirServer第三方投屏软件v7.3.0中文版 (Airplay终端实用工具)
Pytorch visualization
只有漂亮的才能点开
【并发编程】第二章:从核心源码深入ReentrantLock锁
【Try to Hack】AWVS安装和简单使用
认识盒子模型,盒子模型的边框、内外边距、水平布局、垂直布局、设置浮动、处理高度塌陷的基本方法
强制打开网页
VS Code快捷键设置
In the era of Internet of everything, see how IOT test meets the challenge of "core"
Talk about HART Protocol
Ascension begins with change
2302. Count the number of subarrays with a score less than k - sliding array - double hundred code
银联最新测试工程师笔试题目,你能得多少分?
实行自动化网络性能监控的优势
