互聯(lián)網(wǎng)時(shí)代,沒(méi)有數(shù)據(jù)能力,你還怎么升職加薪?

0 評(píng)論 5157 瀏覽 18 收藏 20 分鐘
B端产品经理要负责对目标行业和市场进行深入的分析和调研,了解客户的需求、痛点、期望和行为,找到产品的价值主张 🔗

在互聯(lián)網(wǎng)行業(yè),“數(shù)據(jù)導(dǎo)向”是一個(gè)非常大的特點(diǎn),產(chǎn)品的運(yùn)營(yíng)與迭代都需要用到數(shù)據(jù)。那么,掌握數(shù)據(jù)分析能力能給幫助我們?cè)诼殘?chǎng)上更勝一籌。業(yè)務(wù)同學(xué)掌握基礎(chǔ)數(shù)據(jù)分析,只需要兩步,一起來(lái)看看吧。

互聯(lián)網(wǎng)行業(yè)一個(gè)非常大的特點(diǎn)就是「數(shù)據(jù)導(dǎo)向」,因?yàn)榫€上的服務(wù)和產(chǎn)品非常容易獲取用戶的數(shù)據(jù),同時(shí)依賴(lài)這些數(shù)據(jù),可以非常高效地迭代產(chǎn)品和相關(guān)線上服務(wù)。

因此,在互聯(lián)網(wǎng)行業(yè),數(shù)據(jù)能力是一項(xiàng)非常重要的能力,特別是對(duì)于運(yùn)營(yíng),產(chǎn)品,增長(zhǎng)等業(yè)務(wù)崗位。掌握必備的數(shù)據(jù)能力(SQL能力),是當(dāng)今互聯(lián)網(wǎng)各大廠的加分項(xiàng),擁有數(shù)據(jù)能力的運(yùn)營(yíng)和產(chǎn)品更容易升職加薪,也更容易找到心儀的工作。

那么對(duì)于產(chǎn)品/運(yùn)營(yíng)/增長(zhǎng)同學(xué),需要達(dá)到真正的數(shù)據(jù)分析師的數(shù)據(jù)能力嗎?我跟很多業(yè)務(wù)同學(xué)聊過(guò),很多同學(xué)不愿意學(xué)習(xí)SQL,主要是覺(jué)得可能太復(fù)雜和專(zhuān)業(yè),但其實(shí)不是這樣的。

對(duì)于業(yè)務(wù)同學(xué)來(lái)說(shuō),我們沒(méi)有必要花費(fèi)大量時(shí)間完整地學(xué)習(xí)SQL語(yǔ)言和數(shù)據(jù)庫(kù)知識(shí)。但是,從業(yè)務(wù)角度出發(fā),日常工作中,遇到一些基礎(chǔ)數(shù)據(jù)分析,業(yè)務(wù)同學(xué)如果能自己處理可以更加高效和直接,大大提高工作效率和業(yè)務(wù)判斷專(zhuān)業(yè)度,而達(dá)到這種程度的數(shù)據(jù)能力,其實(shí)只需要熟悉SQL的一些業(yè)務(wù)高頻使用場(chǎng)景,就基本能覆蓋日常90%以上的數(shù)據(jù)工作。

我有幸跟幾個(gè)頭部大廠的專(zhuān)業(yè)的數(shù)據(jù)分析師/分析負(fù)責(zé)人討論過(guò),也在實(shí)際中在我們自己的團(tuán)隊(duì)里實(shí)驗(yàn)過(guò),業(yè)務(wù)同學(xué)掌握基礎(chǔ)數(shù)據(jù)分析,只需要以下兩步:

第一步:花30分鐘,閱讀完下面的SQL基礎(chǔ)語(yǔ)法知識(shí)介紹。

第二步:花半天,自主完成高頻場(chǎng)景測(cè)試題。

第一步

1、數(shù)據(jù)基礎(chǔ)概念介紹

首先,什么是SQL?

SQL,全稱(chēng)Structured Query Language(結(jié)構(gòu)化查詢(xún)語(yǔ)言),它本質(zhì)是一種計(jì)算機(jī)語(yǔ)言,就像python,C++等計(jì)算機(jī)語(yǔ)言一樣。但這種語(yǔ)言可以幫我們?nèi)?shù)據(jù)庫(kù)中查詢(xún)我們想要的數(shù)據(jù)。

接著上述定義,我們?cè)倮斫庀率裁词菙?shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)可以簡(jiǎn)單的理解就是一個(gè)電腦的文件夾,這個(gè)文件夾里放著很多張數(shù)據(jù)表,數(shù)據(jù)表很好理解,就類(lèi)似我們平時(shí)使用的Excel文件。

在數(shù)據(jù)表里,(也就Excel文件里),我們會(huì)有很多數(shù)據(jù)列,每一列一般都會(huì)有一個(gè)列標(biāo)題,如下圖所示,user_name, age, gender, scrore 這些就是字段,然后每個(gè)字段下面的就是具體的數(shù)據(jù)。

總結(jié)來(lái)說(shuō),我們一切數(shù)據(jù)/分析能力的基礎(chǔ):就是利用SQL語(yǔ)言從特定的數(shù)據(jù)表中,查詢(xún)對(duì)應(yīng)的數(shù)據(jù)字段,并做一定的后續(xù)處理,得到我們想要的結(jié)果。

以上就是最核心的三個(gè)概念:數(shù)據(jù)庫(kù),數(shù)據(jù)表和字段。

2、SQL基礎(chǔ)語(yǔ)法介紹

SQL的基礎(chǔ)語(yǔ)法組成如下,可以簡(jiǎn)單的理解成,我們通過(guò)這段代碼,告訴計(jì)算機(jī),我們需要FROM (從)某個(gè)數(shù)據(jù)表,去SELECT(選擇)某些字段。選擇的時(shí)候,可以加一些WHERE conditon(篩選條件),也可以進(jìn)行適當(dāng)分組,和結(jié)果排序,篩選處理。下面的語(yǔ)法中,中括號(hào)部分都是非必須的。

下面通過(guò)Case的方式給大家展示具體使用方法,幫助大家更好的理解這些基礎(chǔ)語(yǔ)法。

Case1、查詢(xún)多列

從下圖的user_profile數(shù)據(jù)表中,取出用戶的設(shè)備id(device_id)對(duì)應(yīng)的性別(gender)、年齡(age)和學(xué)校(university)的字段數(shù)據(jù)。

select device_id,gender,age,university //選擇查詢(xún)的字段
fromuser_profile //從指定的數(shù)據(jù)表中

得到的結(jié)果如下:

這就是最基礎(chǔ)的select 語(yǔ)句,從特定表取特定字段的數(shù)據(jù)。

Case2、簡(jiǎn)單處理查詢(xún)結(jié)果:限制返回行數(shù)/列重命名

從表user_profile中,查看前2個(gè)用戶明細(xì)設(shè)備ID數(shù)據(jù),并將列名改為 ‘user_infos_example’, 請(qǐng)你從用戶信息表取出相應(yīng)結(jié)果。

select device_idasuser_infos_example
from user_profile
limit 2

得到結(jié)果如下:

這里主要是通過(guò) as 給取出來(lái)字段重新命名,同時(shí)limit限制返回的行數(shù)。

Case3、條件查詢(xún)

從Case2中的user_profile表中,查詢(xún)除復(fù)旦大學(xué)以外的所有用戶明細(xì),請(qǐng)你取出相應(yīng)數(shù)據(jù),并按照age進(jìn)行從小到大的排序。

select*//* 代表所有字段
from user_profile
where universitynotin(‘復(fù)旦大學(xué)’)//where篩選條件,過(guò)濾復(fù)旦大學(xué)的數(shù)據(jù)
orderbyage//按照age進(jìn)行排序,order默認(rèn)升序

查詢(xún)結(jié)果如下:

這里在取數(shù)前,使用where 條件來(lái)進(jìn)行數(shù)據(jù)過(guò)濾,再通過(guò)age進(jìn)行排序。

Case4、分組后條件過(guò)濾

從下面的user_profile查看每個(gè)學(xué)校用戶的平均發(fā)貼和回帖情況,尋找低活躍度學(xué)校,請(qǐng)取出平均發(fā)貼數(shù)低于5的學(xué)?;蚱骄靥麛?shù)小于20的學(xué)校。

select university, avg(question_cnt) as avg_question_cnt, avg(answer_cnt) as avg_answer_cnt
// avg()是求列平均值的函數(shù),將一列數(shù)據(jù)返回一個(gè)數(shù)值,這里在執(zhí)行時(shí),先用group by 對(duì)university進(jìn)行分組,
// 然后avg()計(jì)算的為分組后的每個(gè)universtiy的發(fā)帖和回帖數(shù)的平均數(shù)
from user_profile
group by university // 以u(píng)niversity進(jìn)行分組聚合,把相同學(xué)校聚合在一起
having avg_question_cnt<2 or avg_answer_cnt<20 // having只能和group by一起用,用戶分組計(jì)算后,對(duì)均發(fā)帖和回帖進(jìn)行條件過(guò)濾

得到結(jié)果如下:

3、SQL多表查詢(xún)

通過(guò)前面部分,我們大概了解了如何進(jìn)行基礎(chǔ)的表數(shù)據(jù)查詢(xún),在日常工作中,我們經(jīng)常遇到的問(wèn)題是,很多相關(guān)數(shù)據(jù),不是都存在同一張表里,很多時(shí)候是分散在多個(gè)相關(guān)的表里,因此我們?cè)诓樵?xún)的時(shí)候,就需要利用JOIN來(lái)聯(lián)表查詢(xún)。

如上表,我們需要查詢(xún)users表中的device_id在devices表中的user_country信息。這個(gè)就需要繼續(xù)聯(lián)表查詢(xún)。

語(yǔ)法如下:

得到結(jié)果如下:

已經(jīng)將a表的device id和b表進(jìn)行了關(guān)聯(lián)。但1106這個(gè)device_id對(duì)應(yīng)的b表的數(shù)據(jù)為null。這是因?yàn)槭裁茨兀?/p>

這是不同join用法帶來(lái)的差別。join有以下幾種常見(jiàn)用法,前面示例代碼中,使用了left join,也就是左關(guān)聯(lián),保持a表的device_id行數(shù)不變,從b表中,尋找相同的進(jìn)行關(guān)聯(lián),如果關(guān)聯(lián)不到,依然保留,但數(shù)據(jù)就為空。

和left join相對(duì)的就是right join,還是前面的例子,如果改成right join,結(jié)果如下:

除了left/right join之外,還有inner join(內(nèi)關(guān)聯(lián))和full join(全關(guān)聯(lián))

效果分別如下:inner join,結(jié)果如下,只取兩邊都有數(shù)據(jù)的行,沒(méi)有null

full join 就是a表和b表所有列都保留,具體結(jié)果,你嘗試想想,答案私信我告訴你。

關(guān)于者幾種JOIN還有一個(gè)更直觀的示意圖,如下圖,JOIN的用法介紹,這篇文章講解的更好,可以參考:https://zhuanlan.zhihu.com/p/29234064

為了更好地理解join,我們來(lái)看一個(gè)具體的Case

Case5、聯(lián)表查詢(xún)

有下面兩張表,question_practice_detail和user_profile,第一張表里,存儲(chǔ)的是用戶id,設(shè)備id和對(duì)應(yīng)的答題的question_id,以及答題的結(jié)果result;user_profile存儲(chǔ)用戶的基本信息?,F(xiàn)在要查看所有來(lái)自浙江大學(xué)的用戶題目回答明細(xì)情況,請(qǐng)你取出相應(yīng)數(shù)據(jù),查詢(xún)結(jié)果按照question_id升序。

代碼如下:

查詢(xún)結(jié)果如下:

4、常用函數(shù)介紹

Case6、聚合函數(shù)(with 分組)

聚合函數(shù)就是將多行數(shù)據(jù),按照一定規(guī)則聚合為一行,不能顯示聚合前的數(shù)據(jù)。常見(jiàn)的聚合函數(shù),比如count()–計(jì)數(shù),sum()–求和, avg()–求平均,max()–求最大值,min()–求最小值等。

舉一個(gè)簡(jiǎn)單的例子,要看一下下表中男性用戶有多少人以及他們的平均gpa是多少?

具體方式如下:

select count(1) as male_num, avg(gpa) as avg_gpa
from user_profile
where gender=’male’

結(jié)果如下:

和聚合函數(shù)經(jīng)常高頻使用的是分組group by,如前面的例子,如果要統(tǒng)計(jì)不同學(xué)校男生的數(shù)量和平均gpa,就需要用到group by對(duì)學(xué)校進(jìn)行分組,再用聚合函數(shù)進(jìn)行計(jì)算。代碼如下:

select universtiy, count(1) as male_num, avg(gpa) as avg_gpa
from user_profile
where gender=’male’
group by university

結(jié)果如下:

在大部分情況下,聚合函數(shù)都會(huì)搭配分組來(lái)使用。需要注意的是,執(zhí)行順序,是先按照分組(group by),再分組去執(zhí)行聚合函數(shù),得到每個(gè)分組的聚合結(jié)果。

Case7、窗口函數(shù)

在我們?nèi)粘9ぷ髦校?jīng)常會(huì)遇到求分組內(nèi)排名的問(wèn)題,比如每個(gè)城市的TOP 100活躍用戶,每個(gè)部門(mén)的績(jī)效排名等。面對(duì)這種問(wèn)題,就需要使用窗口函數(shù)來(lái)解決。

窗口函數(shù)的基本語(yǔ)法是:

<窗口函數(shù)> over (partition by <用于分組的列名> order by <用于排序的列名>)

在<窗口函數(shù)>的位置,可以放以下兩種函數(shù):

1) 專(zhuān)用窗口函數(shù),包括rank, dense_rank, row_number等專(zhuān)用窗口函數(shù)。

2) 聚合函數(shù),如sum. avg, count, max, min等

因?yàn)榇翱诤瘮?shù)是對(duì)where或者group by子句處理后的結(jié)果進(jìn)行操作,所以窗口函數(shù)原則上只能寫(xiě)在select子句中。

來(lái)看具體的例子:

從下面的user_profile表中,將每個(gè)學(xué)校分別按照gpa進(jìn)行排名。

解題的思路就是找到,每個(gè)學(xué)校的gpa排名,然后分別找到排名第一的學(xué)生device_id, 先通過(guò)窗口函數(shù)找到每個(gè)學(xué)校的排名:

在窗口函數(shù)中,使用了row_number() 用來(lái)返回對(duì)應(yīng)行的行數(shù),因?yàn)槊總€(gè)窗口分組里,是按照gpa降序排列的,因此這里的行數(shù)就是排名數(shù)。

得到結(jié)果如下:

關(guān)于窗口函數(shù),下面這篇文章講解的更為詳細(xì),可參考:https://www.zhihu.com/tardis/zm/art/92654574?source_id=1003

Case8、條件函數(shù)

常用的條件函數(shù)主要有IF 和CASE WHEN,主要用于對(duì)查詢(xún)結(jié)果進(jìn)行條件判斷。其中IF函數(shù)的語(yǔ)法是:

IF(條件表達(dá)式, 值1, 值2)

如果條件表達(dá)式為T(mén)rue,返回值1,為False,返回值2。

返回值可以是任何值,比如:數(shù)值、文本、日期、空值NULL、數(shù)學(xué)表達(dá)式、函數(shù)等。

CASE WHEN的語(yǔ)法是:

CASE WHEN condition THEN result1 ELSE result2END

我們來(lái)看一個(gè)例子:從下面的user_profile表中,將用戶劃分為25歲以下和25歲及以上兩個(gè)年齡段,分別查看這兩個(gè)年齡段用戶數(shù)量

分別用IF函數(shù)和CASE WHEN函數(shù)來(lái)實(shí)現(xiàn):

結(jié)果如下:

第二步

在掌握前面step1部分的知識(shí)點(diǎn)后,下面當(dāng)然就是開(kāi)始刷題了,我為大家找了一些不錯(cuò)的在線刷題站點(diǎn),建議收藏本篇文章,在pc端打開(kāi)后,開(kāi)始做題。

題庫(kù)1: ??途W(wǎng)的SQL練習(xí):https://www.nowcoder.com/exam/oj?page=1&tab=SQL%E7%AF%87&topicId=199

題庫(kù)2: leetcode :https://leetcode.cn/problemset/database/

題庫(kù)3: https://sqlzoo.net/wiki/SQL_Tutorial

SQLZOO包括了 SQL 學(xué)習(xí)的教程和參考資料,支持多國(guó)語(yǔ)言,每一個(gè)語(yǔ)法配套一個(gè)教程、一份數(shù)據(jù)和一個(gè)測(cè)驗(yàn),非常適合初學(xué)者使用,因?yàn)榭梢砸贿呁ㄟ^(guò)教程學(xué)習(xí)語(yǔ)法知識(shí),再通過(guò)測(cè)驗(yàn)鞏固。

后記

1、SQL入門(mén)比較簡(jiǎn)單,但想要真的寫(xiě)好,挑戰(zhàn)很大,還需要多練習(xí),在工作中多實(shí)戰(zhàn)。

2、SQL本質(zhì)還是一種取數(shù)的工具,對(duì)于數(shù)據(jù)能力更高的要求是明白需要取什么數(shù),以及什么樣的數(shù)能表征業(yè)務(wù)的狀態(tài)或者發(fā)現(xiàn)業(yè)務(wù)存在的問(wèn)題。

3、我整理常見(jiàn)的SQL取數(shù)和分析模板,有計(jì)算用戶留存率,各種功能滲透率,用戶活躍度分層分析等等。

專(zhuān)欄作家

南村小付,微信公眾號(hào):南村小付,人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家??焓指呒?jí)產(chǎn)品經(jīng)理,曾任職阿里,歡聚時(shí)代,7年互聯(lián)網(wǎng)產(chǎn)品設(shè)計(jì)運(yùn)營(yíng)經(jīng)驗(yàn)。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自Unsplash,基于CC0協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!
专题
12397人已学习12篇文章
现如今,越来越多的企业开始重视私域,很多的企业都对私域的发展进行了布局。本专题的文章分享了如何搭建私域模型。
专题
11914人已学习12篇文章
如今随着商业的发展,消费者与品牌建立起了更深的联系,商务活动也开始以消费者为中心,所以消费者的体验以及建议就非常重要。本专题的文章分享了消费者行为学。
专题
15724人已学习12篇文章
本专题的文章分享了如何从0-1搭建A/B Test。
专题
15558人已学习12篇文章
本专题的文章分享了交互设计文档的撰写指南。
专题
56929人已学习14篇文章
一次成功的线上活动能让你刷爆朋友圈,拉新活跃留存应有尽有。