读后感:《SQL数据分析实战》运营SQL实用手册

学习SQL,先有用起来,有了使用价值,之后才是去了解它的原理,让使用更加顺畅。

在大部分业务场景中,通过SQL可以快速的实现数据处理与统计。《SQL数据分析实战》区别于其他工具书,它并没有介绍SQL是什么,而是直接讲了如何使用。就好像大模型一样,我们只需要知道怎么用就好。

在《SQL数据分析实战》一书中,根据日常营销、运营、市场中需要统计的数据内容做了归纳,整体来看可以分为下面几个部分。

1、为什么运营需要用SQL

1.1、哪些场景需要用到SQL

1.2、运营用SQL解决哪些问题

2、具体需要用到的SQL内容

3、常用的SQL统计模板

为什么运营需要用SQL

运营的定位

运营的定位是企业中负责推动产品或服务的日常运作、维护和发展,确保其在市场上的活跃度和竞争力。不仅涉及日常管理,还包括战略规划与执行,旨在实现企业的长期目标。

  • 用户关系管理: 通过有效的用户管理策略,如社区运营、客户服务等,增强用户的粘性和忠诚度。
  • 数据分析能力: 运营人员需具备强大的数据分析能力,以便从大量数据中提取有价值的信息,指导运营决策。
  • 项目管理技能: 能够有效管理多个项目,确保每一个项目都能按时完成并达到预期效果。

《SQL数据分析实战(第2版)》([美]马特·古德瓦瑟,等)【摘要 书评 试读】- 京东图书

哪些场景需要用到SQL

运营数据分析的运用场景广泛,涵盖从用户行为分析到产品优化、销售预测和市场趋势分析等多个方面。这种多维度的应用使得数据分析成为企业运营不可或缺的一部分。下面将详细探讨运营数据分析的各种应用场景:

  1. 用户行为分析
  • 用户细分:通过分析用户的购买历史、浏览习惯和交互行为,企业可以将用户分为不同的群体,以便提供更加个性化的服务或产品。
  • 用户体验优化:利用用户在平台上的行为数据,比如点击率、页面访问时长等,可以评估并改进网站的用户界面和用户体验。
  • 产品优化
  • 功能迭代:基于用户行为数据分析,识别哪些功能受欢迎,哪些需要改进或淘汰,帮助产品更贴近市场需求。
  • 市场调整:分析不同市场或用户群体对产品功能的接受度,调整产品策略以适应不同市场的特定需求。
  • 销售预测
  • 趋势分析:通过对历史销售数据的分析,预测未来的销售趋势,帮助企业提前做好库存和供应链管理。
  • 效果评估:分析营销活动的效果,如优惠券使用情况和促销代码追踪,以优化营销策略并提高ROI。
  • 市场趋势分析
  • 竞争对手监控:通过分析竞争对手的市场表现和客户反馈,调整自身的市场策略,保持竞争优势。
  • 市场机会识别:利用行业数据和市场趋势分析,识别新的市场机会或潜在增长领域。
  • 风险管理
  • 异常检测:分析用户行为数据,识别异常模式,如欺诈行为或安全漏洞,保护企业免受损失。
  • 合规性监控:确保数据处理和分析过程符合相关法律法规,如GDPR或其他数据保护规定。

运营用SQL解决什么问题

  1. 数据提取与查询
  • 基本数据获取:运营人员经常需要从数据库中提取特定时间范围或条件下的数据,例如订单信息、用户活跃度等。通过简单的SQL查询,如使用SELECT语句结合WHERE子句,可以直接从数据库中快速获得所需数据。
  • 多表数据整合:在实际业务场景中,所需信息往往分散在不同的表中,如订单详情、产品信息和用户资料等。通过SQL的多表查询功能,例如使用INNER JOINLEFT JOIN,能够有效地合并多个表中的数据,为运营决策提供全面的数据支持。
  • 数据分析与洞察
  • 业绩指标计算:运营团队需要定期计算各种业务指标,如总销售额、平均订单值等。通过SQL的聚合函数如SUM()AVG()等,可以快速计算出这些关键指标,帮助评估运营效果。
  • 复杂数据分析:对于更复杂的分析需求,如计算留存率、客户生命周期价值等,SQL的窗口函数和自定义聚合功能提供了强大的数据处理能力。例如,使用OVER(PARTITION BY)可以进行分组计算,有效支持复杂的业务分析。
  • 报告自动化与优化
  • 数据可视化支持:虽然SQL本身不直接支持数据可视化,但其处理后的数据可以方便地导入到BI工具中进行图表展示。这样,运营人员可以通过图形界面直观地监控业务趋势和性能指标。
  • 自动报告生成:通过定时运行的SQL查询和存储过程,可以实现数据报告的自动更新。这不仅提高了工作效率,还能确保运营团队总是掌握最新的业务数据。
  • 效率提升与沟通简化
  • 减少技术依赖:运营人员如果掌握了SQL,可以在不依赖IT部门的情况下自行处理数据查询和分析任务。这不仅加快了工作流程,也减轻了技术团队的工作负担。

需要掌握哪些SQL技能

SQL的基础数据类型

SQL的基础数据类型主要有以下几种:

1.数值类型:包括整数类型(如INT、SMALLINT、TINYINT等)、浮点数类型(如FLOAT、DOUBLE、REAL等)和定点数类型(如DECIMAL、NUMERIC等)。

2.字符串类型:用于存储字符数据,包括CHAR、VARCHAR、TEXT等。其中,CHAR是定长字符串,VARCHAR是变长字符串,TEXT用于存储大量文本数据。

3.日期和时间类型:用于存储日期和时间数据,包括DATE、TIME、DATETIME、TIMESTAMP等。其中,DATE表示日期,TIME表示时间,DATETIME表示日期和时间,TIMESTAMP表示时间戳。

4.二进制类型:用于存储二进制数据,包括BINARY、VARBINARY、BLOB等。其中,BINARY是定长二进制数据,VARBINARY是变长二进制数据,BLOB用于存储大量二进制数据。

5.布尔类型:用于存储逻辑值,包括BOOLEAN、BIT等。其中,BOOLEAN表示布尔值,BIT表示位值。

6.数据结构:JSON和数组,如JavaScript对象表示法(JavaScript object notation,JSON)和数组。数组是简单的数据列表,通常用方括号括起来,如['cat','dog','horse'];JSON对象说一系列以逗号分隔并用大括号括起来的键值对,如{'name':'Bob','age':27'}。

SQL查询的基础关键语法

select :输出筛选分组聚合后的最终展示列名和聚合运算列

from:从数据表获取数据

where:筛选数据的条件逻辑

and/or:筛选条件之间的关系

in/not in:范围条件筛选

is null/is not null:是否为空判断

group by:对筛选后数据进行分组聚合

having:对聚合列进行过滤

order by:对输出结果按指定列排序

limit 5:限制输出数据行数

SQL查询的数据组合

1.使用join连接表(inner和outer可省略):用on关联对应的列名。

如:

select * from table1 left join table2 on table1.name = table2.name

2.使用union (all)对表进行上下合并(加all表示不去重),注意表对相同列输出列名需保持一致,否则会同时展示两个表的列。

如:

select * from table1 
union all 
select * from table2

3.公用表表达式:使用with建立临时表

with tb as (
  select * from table1
)
select * from tb

常用的SQL函数和取数模板

常用的SQL函数

1.转换数据

case when函数:将查询列中的值映射为其他值

case when ... then '...' 
 when ... then ''
 else '' end as new_columns

coalesce函数:填充为首个非空值

nullif函数:如果第一个值等于第二个值则返回null

least函数:返回任意数量的值的最小值

greatest函数:返回任意数量的值的最大值

转换函数:columns::datatype(columns为列名,datatype为数据类型)

distinct函数:获得唯一不同列组合

distinct on函数:对目标列存在相同数据,仅返回一行数据,可配合order by对保留行进行选择

如:

select distinct on (first_name),* from table order by first_name,hire_date

2.聚合函数

count(columns):计算非空行数

count(*):计算所有行数

min():最小值

max():最大值

sum():求和

avg():求平均值

stddev():求标准差

var():求方差

regr_slope(x,y):求x为因变量,y为自变量时线性回归的斜率

regr_intercept(x,y):求x为因变量,y为自变量时线性回归的截距

corr(x,y):求x与y之间的皮尔逊相关系数

3.窗口函数

select {columns},{window_func} over (partition by {key} order by {order_key}) from table

其中:window_func表示窗口函数,key表示要分区的列,order_key表示要排序的列;常用窗口函数有:

  • row_number:1,2,3
  • rank:1,1,3
  • dense_rank:1,1,2
  • ntile(n):基于order by计算n分位数
  • lag(columns,n):返回columns列当前行向前n行数据
  • lead(columns,n):返回columns列当前行向后n行数据

frame子句:(PRECEDING:往前 - FOLLOWING:往后)

如,滚动的近7天数据:

select date
,amount
,avg(amount) over(order by date rows between 7 preceding and current row) as date_move_7_avg
from table
相关推荐
测试者家园13 分钟前
ChatGPT助力数据可视化与数据分析效率的提升(一)
软件测试·人工智能·信息可视化·chatgpt·数据挖掘·数据分析·用chatgpt做软件测试
疯狂小羊啊13 分钟前
数据分析篇001
数据挖掘·数据分析
小馒头学python18 分钟前
数据分析的常见问题及解决方案
数据挖掘·数据分析
神秘打工猴2 小时前
Flink 集群有哪些⻆⾊?各⾃有什么作⽤?
大数据·flink
小刘鸭!2 小时前
Flink的三种时间语义
大数据·flink
天冬忘忧2 小时前
Flink优化----FlinkSQL 调优
大数据·sql·flink
LinkTime_Cloud2 小时前
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
大数据·运维·gitlab
寒暄喆意3 小时前
智慧农业物联网传感器:开启农业新时代
大数据·人工智能·科技·物联网
m0_548503033 小时前
Flink基本原理 + WebUI说明 + 常见问题分析
大数据·flink
kaoyaoyao4 小时前
小程序评论分数提高,提升用户参与感和忠诚度
大数据·小程序·seo·评论·小程序评分