卡卷网
当前位置:卡卷网 / 每日看点 / 正文

数据分析人员需要掌握sql到什么程度?

作者:卡卷网发布时间:2024-11-23 18:08浏览数量:107次评论数量:0次

能熟练用SQL进行统计分析,包括基本查询语句,聚合函数,连接,子查询,窗口函数等。

作为现互联网的数据打工人,接下来我从SQL必知必会SQL学习方法两个方面来详细介绍~

数据分析人员需要掌握sql到什么程度?  第1张

注意:对于传统企业和一些小公司,数据量级并不太大,这时只要掌握Excel的函数、数据透视表等等就行了;而对于互联网企业和大公司,每天都能产生上亿的流量数据,这时SQL(主要是Hive SQL)就会派上用场。

SQL必知必会

1.基本的查询语句

能够编写基本的 SELECT 语句,包括选择特定列、过滤数据(Where)、排序结果(order by)等。

数据分析人员需要掌握sql到什么程度?  第2张

例如,我有一个顾客信息Customers表,需要取出其中在USA的用户id,姓名,并且按照年龄升序,可以得到如下SQL。

select customer_id,first_name,last_name from Customers where country = 'USA' order by age asc

最后结果为

数据分析人员需要掌握sql到什么程度?  第3张

我们也可以用select * 选取所有列。

2.聚合函数

了解并能使用聚合函数如 SUM、COUNT、AVG、MAX、MIN 等,用于对数据进行统计和汇总

还是上面Customer表,我想取出这些人的最大年龄、最小年龄、平均年龄、年龄之和。SQL如下:

select max(age),min(age),avg(age),sum(age) from Customers

最后结果为

数据分析人员需要掌握sql到什么程度?  第4张

3.GROUP BY 和 HAVING使用:

理解 GROUP BY 子句的作用,能够按照指定列对数据进行分组,并使用 HAVING 子句进行分组后的过滤。

例如,我想按照国家来分组,取出顾客年龄的最大值、最小值,可以得到如下SQL

select country,max(age),min(age) from Customers group by country

得到结果为

数据分析人员需要掌握sql到什么程度?  第5张

如果我想把各国最大客户年龄小于30的数据筛选出来呢,having就派上用场了

select country,max(age),min(age) from Customers group by country having max(age)<30

得到结果如下

数据分析人员需要掌握sql到什么程度?  第6张

这里注意having和where虽然都是过滤数据,但having用于聚合后的过滤,where用于聚合前的过滤,所以不能写"where max(age)<30",会报错。

4.连接

熟悉不同类型的连接(内连接INNER JOIN、左连接LEFT JOIN、右连接RIGHT JOIN、全连接FULL JOIN),能够根据需要连接多个表进行数据处理。
下图所示为SQL各种连接示意。例如INNER JOIN是取两表的交集,LEFT JOIN就是取左表的所有数据,右表关联不上的就为空(RIGHT JOIN则是保留右表的数据);FULL OUTER JOIN是两表的数据都保留,关联不上的左右表都为空。

数据分析人员需要掌握sql到什么程度?  第7张


例如我们有用户订单表Orderlist,现在用Customers分别使用不同的连接方式与订单表Orderlist关联,关联键是customer_id。

数据分析人员需要掌握sql到什么程度?  第8张

-- 内连接 select c.customer_id, c.first_name, c.last_name, o.customer_id, o.item from Customers as c inner join Orderlist as o on c.customer_id = o.customer_id; -- 左连接 select c.customer_id, c.first_name, c.last_name, o.customer_id, o.item from Customers as c left join Orderlist as o on c.customer_id = o.customer_id; -- 右连接 select c.customer_id, c.first_name, c.last_name, o.customer_id, o.item from Customers as c right join Orderlist as o on c.customer_id = o.customer_id; -- 全连接 select c.customer_id, c.first_name, c.last_name, o.customer_id, o.item from Customers as c full join Orderlist as o on c.customer_id = o.customer_id;


不同连接方式得到的结果如下:
内连接(保留两表的交集)

数据分析人员需要掌握sql到什么程度?  第9张


左连接(保留左表的数)

数据分析人员需要掌握sql到什么程度?  第10张


全连接和右连接大家可以思考看看结果会是怎样的~

5.子查询

掌握子查询的概念和用法,能够在查询中嵌套子查询以实现复杂的逻辑。

子查询是在 SQL 查询语句中嵌套在另一个查询语句内部的查询。子查询可以出现在 SELECT、FROM、WHERE 子句中,用于提供更复杂的查询逻辑和条件。子查询可以嵌套多层,以实现更复杂的查询需求。

比如我们想取出>平均年龄的顾客:

-- where后子查询 select first_name,last_name,age from Customers where age > (select avg(age) from Customers)

得到以下结果

数据分析人员需要掌握sql到什么程度?  第11张

选出平均年龄最高的国家对应的顾客姓名

-- from 和 where 后接子查询 select first_name,last_name,age from Customers where country in (select country from (select country,avg(age) from Customers group by 1 order by avg(age) desc limit 1) )

数据分析人员需要掌握sql到什么程度?  第12张

6.窗口函数:

了解窗口函数(row_number, rank, dense_rank,sum over等)的概念,能够使用 OVER 子句结合窗口函数进行高级数据分析,如排名、累计求和等。

select first_name,last_name,age,country, row_number() over(partition by country order by age desc) as rnk, sum(age) over(partition by country order by age desc) as sum from Customers

例如,我们用row_number得到分国家、年龄降序的排名,用sum over得到分国家、累计到排名的年龄和。

数据分析人员需要掌握sql到什么程度?  第13张

7.熟悉SQL执行顺序:

在 SQL 中,查询语句的执行顺序通常按照以下顺序进行:

FROM:指定要查询的表或视图。

WHERE:对 FROM 子句中的表进行筛选,返回符合条件的行。

GROUP BY:按照指定的列对结果进行分组。

HAVING:对 GROUP BY中的分组结果进行筛选。

SELECT:选择要返回的列。

DISTINCT:去除重复的行。

ORDER BY:对结果进行排序。

LIMIT/OFFSET:限制返回的行数和偏移量。

以上是数据分析最基本需要掌握的内容,增删改查、查询性能优化这些都是后端和数据仓库人员关注的,数据分析其实并不需要太关注。

SQL学习方法

学习在于实践,首先解决企业实际问题。

在企业中,掌握Hive SQL的基础内容是不够的,很可能出现一些自己完全没有用过的用法。

举几个例子,某一列的数据格式是例如['24','25','24','27']的字符串,但需要写sql统计每个数字出现的频次;

某一列的数据格式是一个{'coupon_id:[2210,2220,2210]',page_id:'2519'}这样的格式,我们须统计每个coupon_id对应的次数(尤其是在做流量转化漏斗时,部分数据直接从前端埋点上报,数据内容未解析);

前人留下来超过几百甚至上千行的取数逻辑自己看不懂……

遇到这样实际的问题,可以向大模型工具提问,减少了查阅资料和文档的时间,提升解决问题效率。

例如我们可以向GPT提问:“我有个hive表,对应的列名有user_id和coupon_id,该列的数据格式是例如['24','25','24','27']的字符串,现在希望统计对于每个user_id分组,具体coupon_id数字出现的频次,请帮我写一个Hive SQL”

数据分析人员需要掌握sql到什么程度?  第14张

这样我们可以快速解决问题~大模型还可以帮助我们解读SQL,给SQL debug,能有效提升数据分析师的工作效率。

如今大模型工具已经具备初级数据分析师的能力未来的工作模式很可能演变为人使用大模型进行数据分析。对于数据分析师来说,紧跟时代前沿,了解大模型、有效利用大模型能提升自己的SQL学习和分析效率,增加自己的不可替代性。

越来越多的人来使用大模型技术提升效能。如果你想全面了解大模型技术,紧跟时代、走上AI快车道,提升工作学习效率和个人收入,推荐体验这门「知乎知学堂」联合「AGI课堂」官方发布的:AI大模型免费公开课。课程特邀业界专家为我们全面解读大模型技术,在两天的免费课程中,我们可以了解大模型发展历程与训练方法、利用LangChain+Fine-tune定制大模型应用等知识。

添加助教老师微信还可以领取免费大模型工具网址等资源,不要错过啦~

除了企业里的实践,也可以通过牛客网、力扣网等网站刷SQL题来实践。

比如求用户最长连续登陆天数、留存计算问题(新用户留存,活跃用户留存等等)

记住刷题的时候千万别只刷简单题,尤其对于想面互联网的朋友来说,至少得刷中等、困难题。因为企业里真实的查询就是更复杂,远远不是写一个select from就能解决的。

(曾经爬过有1000多行SQL的数据仓库底表。。。)

数据分析人员需要掌握sql到什么程度?  第15张

总而言之,多写多练,有不会的可以查教程或问大模型,才能充分熟练SQL这个工具。加油!


我是等壹,毕业于上海交大,多年机器学习研究,现某大厂码农一枚。

是技术和文艺的探索者,希望人生尽兴、有趣~

我会定期分享人工智能、大数据、职场、学习技巧等相关内容,欢迎关注!

以下是我的部分回答:

为什么我还是无法理解transformer?程序员,上班没事做该怎么办?机器学习需要哪些基础?

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码