sql数据分析技巧(数据分析渐成标配)
互联网企业如BAT(百度阿里腾讯),在经过漫长的用户积累后都形成了自己的数据库。
在大数据时代下,将不断更新的数据库整理、加工和排序所形成的有效信息,能为公司的产品、运营甚至是高层战略提供第一手的参考资料,从而帮助他们更为科学和高效地解决用户痛点。
2020年,SQL已经成为数据库语言的“民间标准”和程序猿的“生存技能”。
一直以来,我在咨询工作中发现一些互联网大厂(如谷歌),以及四大会计事务所之一的德勤,在招聘数据分析的工作时,均要求考核者熟练掌握SQL(Structured Query Language:结构化查询语言)。
有趣的是,这些处于“风口浪尖”上的互联网、咨询巨头,由于行业对高价值信息敏感的特性,往往在数据管理上走在时代的前列;他们在优势领域的招聘要求就像是风向标,被众多同类的中小公司参考和使用。
而这就带动以互联网和信息产业为基础,整个“社会大工厂”对SQL应用和相关人才的需求。
考虑到大环境下SQL的发展潜力,以及目前应用人才市场对资深SQL人员“求贤若渴”的现状,从现在起学习SQL,掌握基本操作,能为我们简历加分、职业增分。
不过SQL的专业范围也限制了感兴趣的同学对它的了解程度,所以我特别准备了从零到入门的SQL解析,来帮助将来在互联网技术岗从业的“SQL小白”,掌握SQL基础操作。
- I -
SQL是什么
SQL:Structured Query Language即结构化查询语言。是目前数据库领域使用最为广泛的数据读取和编辑自动化语言,语法近似于英语,还能跟其他编辑语言对接。
简单地说,就是一个能快速读取“超大版Excel和特定文件“的数据库编辑工具,它非常善于存取和组织数据,在2020年和我们的日常生活联系日趋紧密。
它的作用就像是大家中午点开外卖平台,首页跳出的”热销产品“;下班打开某音,滑到的”推荐达人“;睡觉前浏览微信”看一看“,转出的“3 朋友在看”,这些都是基于用户喜好和反馈、内容质量和点击率等数据指标排出来的“产品推荐”。
而其中涉及到的成千上万家外卖商家、能歌善舞的俊男美女、各大领域的无数自媒体工作者每天产生的各类数据,经过识别、筛选、加工、排序后产生的最终结果,就是SQL的成果。
SQL在这里产生的价值是:通过数据读取和组织抓住关键信息,完成筛选和排序。
例如从配送范围、历史订单中帮助我们“搜索”到某个店家,从常看类型、口味喜好中引导我们“滑到”某个达人,从热门10W 、浏览记录里推荐我们“浏览”某篇公众号的文章,都是SQL的手段。
- II -
为什么用SQL
SQL作为关系数据库语言,在1980年10月就被作为美国作为相关标准并经国际标准化组织认可,发展相对成熟;而且在相关社区有一大批人才持续互动交流。
成长中的它稳定可靠、上手容易,互联网小白几天就能入门,并能够做出查询数据等基本操作。
而更为重要的是,许多语言(如VB、VFP、C等)都可以通过SQL各种数据库,不管你是由哪种DBMS(SQL Server、Oracle、MySQL、ACcess等)生成的数据库。实现了语言无关性和DBMS无关性。
这意味着无论你是C语言精通者,还是VB资深用户,都能在数据库语言这块和SQL匹配,“海阔天高任鸟飞”,兼容性极强的SQL能让不同起点和轨道的用户,在数据库上完美对接。
而值得注意的是,2020年的SQL数据库普及度极高,已经为其自身的成长构筑了一个良性循环。各大公司,如BAT(百度,阿里巴巴,腾讯),外企,国企都会用SQL来筛选和整理自己的数据库。
在现实中,SQL是相对稳定成熟而又处在“用户上升期”的数据库语言,未来有良好的发展潜力。
- III -
SQL怎么用
先来看看SQL的基本结构:
如图所示,名为“grace”的数据库里包含了5张表。
因为在该案例中只涉及到两张表product(产品表),sales(销售表),所以先为大家展示这两张表里包含的字段:
产品表:
销售表:
现在我们需要汇总不同产品大类、小类的销售总金额,并按照从大到小的顺序进行排列。(代码如下所示)
我们需要的字段为产品大类( base_category)、产品小类(category)和销售总金额(SUM(amount) )。
1)首先看第四、五行。
第四行:FROM sales s :把sales表命名为s
完整语句应为 SELECT*FROM sales s(出于简便省略了SELECT)
即:选择sales表(SELECT),并把sales表命名为s(命名用FROM)
把小明命名为老王:SELECT*FROM 小明 老王,简称FROM 小明 老王
当然,小明和老王在SQL中要用字母代替,所以
同理,把A命名为B:SELECT*FROM A B,简称FROM A B
第五行:NNER JOIN product p ON s.product_id = p.product_id
我们把它拆分为三个部分,分别是 命名 、关联 、内连接
第一部分:命名
与第四行同理,我们把product 命名为p
在原语句中直接省略SELECT 和 FROM
第二部分:关联
[表] INNER JOIN [表]...ON...[关联条件] ,这是两张表关联的固定语法
这里第四行的sales表作为第一个【表】,INNER JOIN 后衔接第二个【表】即
INNER JOIN product ON
因为又把product表命名为p,所以是INNER JOIN product p ON
第三部分:内连接
拆分到最后我们发现还剩下s.product_id = p.product_id ,其实就是
sales表和product表通过共同的字段:产品ID (即:product_id)进行内连接。
注:内连接是指找出每个表中的符合条件的共存记录
所以第五行完整的意思是:将销售表sales(简称s)和产品表(命名为p)以相对的产品编号连接(product为产品,id为商品编号)
2)第六行。GROUP BY base_category,category意思是使用 GROUP BY 将数据按照产品大类 、产品小类进行分组。
值得注意的是,在SQL中的语法的大小写都能被识别,所以GROUP BY 和 group by都可以用。
3)再看第一、二、三行。
SELECT的意思是进行查询选择,后面接上的p. base_category,p.category表示选择产品表中的产品大类,产品小类。
在SUM (s.amount) AS total中,AS是“重命名”的意思,所以sum(s.amount)表示计算销售总额并重命名为 total。
Select p. base_category,p.category,sum(s.amount)完整的意思也就是选择输出产品大类,产品小类以及经过计算重命名后的toal。
4)最后一行。ORDER BY total DESC意思是使用ORDER BY将数据按照销售总额即命名后的total进行排序。(SQL里的默认排序方式为升序,加上DESC则表示降序)
这就是一个通过SQL语句对数据库进行查询的例子,看起来是不是很简单?
但如果是人工从成百上千上完条数据中筛选,这个工作量可能还是很大的。
从这个例子中大家能看出,在SQL中语句的书写顺序和执行顺序是不同的,语句的执行通常按照FROM--WHERE--GROUP BY--HAVING--SELECT--ORDER BY的顺序。
而在具体执行的先后顺序上:ON--WHERE--HAVING。
这里的WHERE与HAVING也是常用的数据提取语句,均用来进行数据筛选。但是WHERE语句只可以筛选原始数据,HAVING语句则可以用来筛选原始数据和计算后的数据。
除了上面所用到的最基本的语句外,根据指令种类的不同,SQL 语句可以分为以下三类:
1)DDL(Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。
CREATE: 创建数据库和表等对象
DROP: 删除数据库和表等对象
ALTER: 修改数据库和表等对象的结构
2)DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录。DML 包含以下几种指令。
SELECT:查询表中的数据
INSERT:向表中插入新数据
UPDATE:更新表中的数据
DELETE:删除表中的数据
3)DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令。
COMMIT: 确认对数据库中的数据进行的变更
ROLLBACK: 取消对数据库中的数据进行的变更
GRANT: 赋予用户操作权限REVOKE: 取消用户的操作权限
SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作(“有手就行”)。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式。
SQL按照用途可分为6种语言:数据查询、数据操作、事务控制、数据控制、数据定义、指针控制语言,语法近似于英语,稍加摸索便能入门。
- IV -
学会SQL的用处
对于意愿从事互联网工作的程序猿来讲,很现实的用处是职业需求。
一是不会SQL在竞争中受限,二是学会SQL薪资可观。
21世纪高新技术产业蓬勃发展,数据分析正在成为相关从业人员的基本生存技能;数据分析师的岗位也变得炙手可热,有1到3年经验的数据分析师薪资普遍不低于10k,而工作3到5年薪资普遍不低于15K,大环境下的数据分析师有着相当可观的薪资待遇。
而更多的复合型跨行岗位要求掌握SQL,比如产品/运营/战略 数据分析。掌握数据分析不仅能在求职时加分,还能极大提升工作效率。这点,从国内外“互联网巨头、咨询大头”等公司对于数据分析人才的招聘筛选上,就能看出一些睥睨。
阿里巴巴:(数据分析师)
谷歌:(分析主管)
德勤:(经理)
可想而知,在可预见的未来,熟练掌控SQL在互联网公司招聘上会更多地成为“硬性指标”。
在“时代大风向”下,花不多的时间看看SQL,能帮程序猿在简历上“添砖加瓦”,在职场中获得更多的晋升机会;对于准备在数据分析领域长期发展的小伙伴,SQL则是未来发展的“必备技能”。
—— 关于Etesian ——
前战略咨询顾问
现BAT战略分析经理
先后服务过大型央企、民企、500强外企、PE基金等各类客户
担任过面试官
也负责为咨询新人做培训
专注个人发展
这里有干货的咨询技能
也有职场感悟
点击“阅读原文”关注Eteisian成长指南
收获真正的成长
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com