当前位置:首页 > 每日看点 > 正文内容

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

卡卷网1年前 (2024-11-23)每日看点243

能熟练用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?程序员,上班没事做该怎么办?机器学习需要哪些基础?

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/11/1383.html

分享给朋友:

相关文章

创业值得吗?

许多企业主会说,是的。企业所有权可能意味着利润以及一定程度的财务稳定性。此外,对于小企业主来说,它提供了摆脱朝九晚五工作限制的机会,这些工作可能不会给您带来快乐或成就感。也就是说,创业并非没有挑战——从提出一个有利可图的想法,到获得资金,再...

你有突破100个粉丝了吗?

你有突破100个粉丝了吗?

100粉已经过啦!说说怎么过的吧,最开始疯狂的写回答,写想法,关注人数在50几以下持续有两周多,每天都关注变化,都是个位数增长,后来干脆不看了。到第三周时突然一周增长了100多人,一天十几人,想想应该归功于多互动,给他人点赞评论,让自己曝光...

PS有哪些实用小技巧,小白也能一学就会?

PS有哪些实用小技巧,小白也能一学就会?

不看后悔系列!本篇分享25个PS实用的技巧!不能保证每个都能让你惊艳,但是却是我用心写出来的,希望对你有帮助。另外我的知乎也写了接近200篇PS的技巧,超级合集分享!我目前正在带一个PS/Ai的软件训练营,两个多月搞定两大软件的学习详细的内...

支付宝碰一碰市场如何?

支付宝碰一碰市场如何?

今年,支付宝又整了新的大活,即无须扫码即能完成支付操作的“支付宝碰一碰”正式登场。下面就来给大家分析分析,这是个什么情况,为什么都在说能赚钱。支付宝碰一下怎么赚钱的?都有谁能赚到这份钱?1.支付宝碰一下原理支付宝碰一下的本质依旧是“条码支付...

如何判断 Java 工程师的基础知识是否扎实?

我来给你出几道大题,能答对70%,你就算基础扎实了。第一部分 Java基础(27)1. 程序本质:代码是如何被执行的?CPU、操作系统、虚拟机各司何职?2. 基础语法:从CPU角度看变量、数组、类型、运算、跳转、函数等语法3. 引用类型:同...

无意中发现技术主管写的代码,大家帮忙看看什么水平?

无意中发现技术主管写的代码,大家帮忙看看什么水平?

虽然很多答主用了诸如“典范级”、“心旷神怡” 的形容, 赞美这段代码, 但这里, 出于技术讨论的动机, 我说说不同看法.栈, 如果善于利用栈来处理树结构, 那么可以写出更简洁的代码, 根本不需要 recuresiveFn 这种方法. 泛型,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。