用SQL做一份数据分析报告,涉及哪些知识点?

举报
TiAmoZhang 发表于 2023/04/27 08:42:25 2023/04/27
【摘要】 简介: 在工作中,每个数据分析师都离不开做数据分析报告,而一份可落地的报告更是要求灵活地应用工具及理论知识。接下来,我们从工具应用的角度,看看如何用SQL做一份完整的数据分析报告。

640.png


01、数据导入

(1)新建数据库。

(2)用数据库管理工具 Navicat 连接数据库。

(3)通过 Navicat 将数据(如 Excel、SQL 脚本等格式)导入数据库。

02、数据清洗

数据清洗的目的是将数据按照业务分析需求,剔除异常值、离群值,使分析结果更准确地反映业务实际。

常见的应用如下:

是否存在空值:

640.png


是否存在重复数据:通过 GROUP BY 关键字实现。

640.png


是否存在业务定义以外的数据:例如,需要分析华南数据,而数据中出现华北数据。


03、数据格式化

这一步骤需要根据后续分析需求,调整表格结构、数据格式等,如出于数据存放原因,拿到的数据表格可能是一维表,不能满足分析需求,需要将其调整为二维表。

常见的应用如下:
时间函数:如将“时间戳”格式化为日期、时间、月份、周(常见于周分析)等,可通过“FROM_UNIXTIME”“DATE_FORMAT”等函数实现。

行列互换:如解决上述的一维表转为二维表的问题,可通过关键字“CASE WHEN”实现。

字段的拆分与合并:如将收货地址字段拆为省、市、镇等字段,可通过“CONCAT”“LEFT”“RIGHT”“SUBSTRING”等函数实现。

04、整体分析

在开始真正的分析之前,需要进行探索性数据分析(Exploratory Data Analysis,

EDA),也就是对现有数据进行整体分析,对现状有大体的了解。更重要的是,通过整体分析,找出业务运营存在的问题,进而提出业务目标,展开后续的深度分析。

常见的应用如漏斗分析:如 AARRR 模型、阿里营销模型 AIPL 等,通过简单的“COUNT”函数可直接实现。

05、建立视图

面对复杂的业务分析,SQL 语句也会变得复杂,往往需要不断嵌套。为了减少分析时语句的复杂性、避免重复执行相同语句,可以采用新建视图的方式,将重复性高的语句固定为视图,再在此基础上进行复杂查询。
新建视图:

640.png


06、用户分析

在整体分析中,明确业务问题、目标后,便可开始进行用户分析。根据分析目的的不同,采用不同的分析方法,常见的分析方法如下:

(1)“人货场”分析。

(2)“复购”分析。核心问题在于如何计算“复购”:
● 用“窗口函数 +DENSE_RANK()”统计每个订单是该用户的第几次消费,命名为 'N_CONSUME'。

● 第一次消费即为用户“首购订单”,大于或等于第二次消费的订单则为“复购订单”。

● 针对复购订单进行统计,即可进行复购分析。
(3)“RFM 模型”分析。核心问题在于如何定义阈值及人群划分:
● 通过“窗口函数”可计算出每个用户的 RFM 值:

R:每个用户最后消费日期,与分析日期相减的天数。

F:通过复购分析中得出的 N_CONSUME,计算最大消费次数。

M:简单地合计用户所有消费金额。

● 阈值:可通过计算所有用户的 RFM 平均值获得。

● 根据 RFM 高低值通过“CASE WHEN”将所有用户划分到八类人群中。
作为专注数据分析结论/项目在业务落地以实现增长的分析师,建议在开始学习新技能前,先明确应用场景。也就是先了解与 SQL 相关的数据分析工作有哪些,有了目标,才能知道需要准备什么知识来应对。

07、数据查询

● 业务场景

数据查询也就是常说的“提数”。在实际工作场景中,如果向 IT 人员提提数需求,一般都需要“沟通 + 排期”,所以最有效率的建议就是自己从数据库里提数。数据分析师除了自身的分析工作外,有时(甚至是经常)还需要应付产品、运营等部门的提数需求。

● 必备知识

简 单 查 询:即 最 简 单 的 关 键 字 组 合“SELECT+FROM+WHERE+(BETWEEN/IN)”。这个简单的查询可以应对部分提数需求,例如运营想查看某段时间订单。

多表查询:INNER JOIN、LEFT JOIN 等联结关键字。数据会散落到数据库的各个角落,如果想要了解一笔订单情况,信息存在以下这些表中:订单流水表、订单详情表、商品详情表、门店表、会员表等。该部分的关键在于“明确业务分析需求→选择合适的联结方式”。

08、分析数据

● 业务场景

分析数据可谓是数据分析师的核心工作。面对复杂的业务问题,重点在于将其拆解、转译成简单的 SQL 问题。例如,教育行业中某领导要求你“分析某课程的效果如何”,课程效果可通过学生成绩反映,即要计算成绩最大值、最小值、学生成绩分布,这时就要使用 SQL 语句。

● 必备知识

汇总分析:用 GROUP BY 关键字解决业务问题。如计算每个课程学生的平均成绩:

640.png


复杂查询:如嵌套子查询、标量子查询、关联子查询,可应对更复杂的业务问题。如找出每个课程最高分的学生时,需要按课程分组后找到最高成绩记录,可以应用关联子查询:

640.png


窗口函数:聚合 / 排序函数 OVER (PARTITION BY…ORDER BY…)。此函数可解决复杂业务问题,如常见的 TOP N 问题:找出每个课程成绩前三的学生,需要按课程分组对学生按成绩排名,再从中找出排名前三的学生:

640.png


09、数据更新

● 业务场景

数据更新即常说的“增删改”。该场景之所以仅有两星,是因为实际工作中,数据库运维部门给到数据分析师的数据库账号多半是只读权限,也就无法去“增删改”;此外,还有数据管控的原因。所以,此场景可能更多存在于自建数据库中,如在计算机上新建虚拟机搭建数据库服务器,导入数据后方便进行下一步分析。

● 必备知识

数据库与表的创建、删除和更新。该部分知识点关键在于“字段类型的设置”要符合后续分析需求,如订单商品数量就要设置成数值类型,订单日期设置成日期类型等。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。