數據分(fēn)析中(zhōng)的SQL如何解決業務問題?

時間:2021-08-11 作者:管理員(yuán) 點擊:429

編輯導語:作爲一(yī)名數據人員(yuán),需要掌握SQL嗎(ma)?掌握的程度需要到多少?作爲一(yī)名專注于分(fēn)析結論/項目在業務落地以實現增長的分(fēn)析師,掌握SQL相關工(gōng)作内容,有助于更好地解決業務問題。本文作者總結了一(yī)些SQL的必備知(zhī)識與應用場景以及相關的實戰應用。

數據分(fēn)析人員(yuán)需要掌握SQL到什麽程度?

請問做一(yī)名數據分(fēn)析人員(yuán),在SQL方面需要掌握到什麽程度呢?會增删改查就可以了嗎(ma)?還是說關于開(kāi)發的内容也要會?不同階段會有不同的要求嗎(ma)?

作爲專注數據分(fēn)析結論/項目在業務落地以實現增長的分(fēn)析師,建議在開(kāi)始學習新技能前,先明确應用場景。有的放(fàng)矢才能不枉費(fèi)努力。

翻譯過來就是:先了解與SQL相關的數據分(fēn)析工(gōng)作有哪些?有了目标,才能知(zhī)道需要準備什麽知(zhī)識來應對。

按我(wǒ)(wǒ)目前與SQL相關的工(gōng)作内容,爲你提供以下(xià)參考:

食用說明:根據以下(xià)場景,選擇需要重點學習的知(zhī)識點。

一(yī)、SQL應用場景及必備知(zhī)識

星标根據使用頻(pín)率标記,而非重要性。

1.數據查詢★★★

(1)業務場景

也就是常說的“提數”。

實際工(gōng)作場景中(zhōng),如果向IT提提數需求,一(yī)般都需要溝通+排期,所以最有效率的建議就是自己會從數據庫裏提數,此簡單查詢可以應對部分(fēn)提數需求,例如運營想查看某段時間訂單數據分(fēn)析師除了自身的分(fēn)析工(gōng)作外(wài),有時(甚至是經常)還需要應付産品、運營等部門同事的提數需求。

(2)必備知(zhī)識

(1)簡單查詢

即最簡單的關鍵字組合SELECT+FROM+WHERE+(BETWEEN/IN)是SQL查詢的地基,此簡單查詢可以應對部分(fēn)提數需求,例如運營想查看某段時間訂單。

(2)多表查詢

即INNERJOIN、LEFTJOIN等聯結關鍵字,想象中(zhōng)的取數可能是直接在某個表SELECT想要的字段?

NO!實際上爲了查詢效率,數據會散落到數據庫的各個角落,例如想要了解一(yī)筆訂單情況,信息存在這些表中(zhōng):訂單流水表、訂單詳情表、商(shāng)品詳情表、門店(diàn)表、會員(yuán)表等。

該部分(fēn)知(zhī)識的關鍵在于「明确業務分(fēn)析需求→選擇合适的聯結方式」。

2.數據更新★★☆

(1)業務場景

即“增删改”,該場景之所以僅兩星的原因,是實際工(gōng)作中(zhōng),數據庫運維部門給到我(wǒ)(wǒ)們數據分(fēn)析師的數據庫賬号多半是隻讀權限,也就無法去(qù)“增删改”。

此外(wài),還有數據管控的原因,所以此場景可能更多在于自建數據庫中(zhōng),如在電(diàn)腦上新建虛拟機搭建數據庫服務器,導入數據後方便進行下(xià)一(yī)步分(fēn)析。

(2)必備知(zhī)識數據庫與表的創建、删除和更新

該部分(fēn)知(zhī)識點關鍵在于「字段類型的設置」要符合後續分(fēn)析需求,如訂單商(shāng)品數量就要設成數值類型、訂單日期設成日期類型等(因爲見過都設成字符類型的表,所以就簡單提一(yī)下(xià))。

3.分(fēn)析數據★★★

(1)業務場景

該部分(fēn)可謂是數據分(fēn)析師的核心工(gōng)作。面對複雜(zá)的業務問題,重點在于将其拆解、轉譯成簡單的SQL問題。

「案例」例如教育行業中(zhōng)某領導要求你“分(fēn)析某課程的效果如何”→翻譯:課程效果可通過學生(shēng)成績反映,即是要計算成績最大(dà)值、最小(xiǎo)值、學生(shēng)成績分(fēn)布→SQL語句。

(2)必備知(zhī)識

(1)彙總分(fēn)析

即GROUPBY關鍵字。

(2)解決業務問題

如計算每個課程學生(shēng)的平均成績:SELECTavg(成績)FROM成績表GROUPBY課程

(3)複雜(zá)查詢

如嵌套子查詢、标量子查詢、關聯子查詢,可應對更複雜(zá)的業務問題:

如找出每個課程最高分(fēn)的學生(shēng)→需要按課程分(fēn)組後找到最高成績記錄,可以應用關聯子查詢:SELECT學生(shēng)名字FROM成績表aWHERE成績=(SELECTmax(成績)FROM成績表bWHEREa.課程=b.課程)

(4)窗口函數

聚合/排序函數()OVER(PARTITIONBY…ORDERBY…)

此函數可解決複雜(zá)業務問題,如常見的TOPN問題:

找出每個課程成績前三的學生(shēng)→按課程分(fēn)組對學生(shēng)按成績排名,再從中(zhōng)找出排名前三的學生(shēng):SELECT學生(shēng)名字FROM(SELECT學生(shēng)名字,dense_rankover(partitionby課程orderby成績desc)a’成績排名’FROM成績表)tWHEREt.成績排名<4

4.數據産品★☆☆

(1)業務場景

對于部分(fēn)崗位,如我(wǒ)(wǒ)在的集團用戶數據中(zhōng)心,需要負責搭建如CDP這樣的數據産品,雖然多數情況下(xià)是由開(kāi)發負責數據庫工(gōng)作,但是對于裏面核心的功能如運營指标體(tǐ)系、模型報表等,背後的計算邏輯、數據流,要求數據分(fēn)析師了如指掌。

此外(wài),對于剛開(kāi)始建立數據分(fēn)析團隊的部門,還存在[數據同步]的需求,即要從ERP、CRM等系統将需要分(fēn)析的原數據同步到自己的數據庫裏便于分(fēn)析,而此需求需要通過存儲過程實現。

(2)必備知(zhī)識存儲過程

即PROCEDURE,可以将某業務需求,或者數據産品中(zhōng)的報表對應的所有SQL語句放(fàng)在一(yī)起,方便一(yī)鍵執行,如RFM模型裏的語句可以寫成存儲過程,計算結果實時同步到前端。

「SQLSERVER」計劃:面對「數據同步」需求,有了存儲過程後,還需要進行定時任務,在非業務時間執行數據同步的存儲過程。

如是使用SQLSERVER版本,可以通過“計劃”實現定時任務。

5.項目部署★☆☆

(1)業務場景

數據分(fēn)析結論在業務場景測試有效後,就需要通過報表、模型等方式落地形成業務常态。而這個項目落地,可能交給開(kāi)發處理,但更有效的方式是分(fēn)析師可以參與到部署的過程中(zhōng)。這個過程,其中(zhōng)一(yī)個重要的部分(fēn)就是數據庫的設計:如何設計表格以提高計算效率。

(2)必備知(zhī)識

數據庫設計與「SQL三範式」:SQL三範式的目的在于解決數據冗餘、計算效率低等問題,另一(yī)方面對數據增加、修改更友好。

以上部分(fēn)從業務場景出發,讨論業務問題的解決方案與SQL知(zhī)識點的關系,解決學習了SQL之後可以做什麽的問題。

下(xià)面将從實戰分(fēn)析場景出發,講解分(fēn)析報告中(zhōng)需要掌握哪些SQL知(zhī)識?

二、實戰:如何分(fēn)析用戶?

用SQL做一(yī)份數據分(fēn)析報告涉及什麽哪些知(zhī)識點?

在工(gōng)作中(zhōng),每個數據分(fēn)析師都離(lí)不開(kāi)做數據分(fēn)析報告,而一(yī)份可落地的報告更是要求靈活地應用工(gōng)具及理論知(zhī)識。接下(xià)來,我(wǒ)(wǒ)們從工(gōng)具應用的角度,看看如何用SQL做一(yī)份完整的數據分(fēn)析報告。

1.數據導入

(1)新建數據庫

用優秀的數據庫管理工(gōng)具Navicat連接數據庫,通過Navicat将數據(如Excel、SQL腳本等格式)導入數據庫。

2.數據清洗

數據清洗的目的是爲了将數據按照業務分(fēn)析需求,剔除異常值、離(lí)群值,使分(fēn)析結果更準确反映業務實際。

常見的步驟如下(xià):

是否存在空值:WHERE`字段名`isnull

是否存在重複數據:通過GROUPBY關鍵字實現

SELECTCOUNTFROM表名GROUPBY字段名HAVINGCOUNT(*)&1

是否存在業務定義以外(wài)的數據:比如需要分(fēn)析華南(nán)區域數據,而數據中(zhōng)出現華北(běi)數據

3.數據格式化

這一(yī)步是要根據後續分(fēn)析需求,調整表格結構、數據格式等,如出于數據存放(fàng)原因,拿到的數據表格可能是一(yī)維表,不滿足分(fēn)析需求,需要将其調整爲二維表。常見的步驟如下(xià):

時間函數:如将「時間戳」格式化爲日期、時間、月份、周幾(常見于周分(fēn)析)等,可通過「FROM_UNIXTIME」「DATE_FORMAT」等函數實現

行列互換:如解決上述的一(yī)維表轉爲二維表的問題,可通過關鍵字「CASEWHEN」實現

字段的拆分(fēn)與合并:如将收貨地址字段拆爲省、市、鎮等字段,可通過「CONCAT」「LEFT」「RIGHT」「SUBSTRING」等函數實現

4.整體(tǐ)分(fēn)析

在開(kāi)始真正的分(fēn)析之前,需要進行探索性數據分(fēn)析(ExploratoryDataAnalysis,EDA),也就是對現有數據進行整體(tǐ)分(fēn)析,對現狀有大(dà)體(tǐ)的了解。

更重要的是,通過整體(tǐ)分(fēn)析,找出業務運營存在的問題,進而提出業務目标,展開(kāi)後續的深度分(fēn)析。

常見的步驟如下(xià):

漏鬥分(fēn)析:如海盜模型AARRR,阿裏營銷模型AIPL等,通過簡單的「COUNT」函數,直接數就可實現

5.建立視圖

面對複雜(zá)的業務分(fēn)析,SQL語句也會變得複雜(zá),往往需要不斷嵌套。爲了減少分(fēn)析時語句的複雜(zá)性、避免重複執行相同語句,可以采用新建視圖的方式,将重複性高的語句固定爲視圖,再在此基礎上進行複雜(zá)查詢。

新建視圖:CREATEVIEW視圖名ASSELECT…

6.用戶分(fēn)析

從整體(tǐ)分(fēn)析中(zhōng),明确業務問題、目标後,便可開(kāi)始進行用戶分(fēn)析。根據分(fēn)析目的的不同,采用不同的分(fēn)析方法,而常見的分(fēn)析方法如下(xià):

(1)「人貨場」分(fēn)析

(2)「複購」分(fēn)析

核心問題在于如何計算“複購”:用「窗口函數+DENSE_RANK」統計每個訂單是該用戶的第幾次消費(fèi),命名爲’N_CONSUME’。

第一(yī)次消費(fèi)即爲用戶“首購訂單”,大(dà)于等于第二次消費(fèi)的訂單則爲“複購訂單“,針對複購訂單進行統計,即可進行複購分(fēn)析。

(3)「RFM模型」分(fēn)析

核心問題在于如何定義阈值及人群劃分(fēn):通過[窗口函數]可計算出每個用戶的RFM值:

R:每個用戶最後消費(fèi)日期,與分(fēn)析日期相減的天數即爲R

F:通過複購分(fēn)析中(zhōng)得出的N_CONSUME,計算最大(dà)消費(fèi)次數即爲F

M:簡單地SUM用戶所有消費(fèi)金額,即爲M

阈值:可通過計算所有用戶的R,F,M平均值獲得

所有用戶的RFM值與阈值比較,通過「CASEWHEN」轉爲‘高’、’低’兩個值,根據RFM高低值通過「CASEWHEN」将所有用戶劃分(fēn)到八個人群中(zhōng)。
返回列表
在線溝通

Are you interested in ?

感興趣嗎(ma)?

有關我(wǒ)(wǒ)們服務的更多信息,請聯系

136 7365 2363(同微信) 13140187702

鄭州網站建設鄭州網站設計鄭州網站制作鄭州建站公司鄭州網站優化--聯系索騰

與我(wǒ)(wǒ)們合作

鄭州網站建設鄭州網站設計鄭州網站制作鄭州建站公司鄭州網站優化--與索騰合作,您将會得到更成熟、專業的網絡建設服務。我(wǒ)(wǒ)們以客戶至上,同時也相互挑戰,力求呈現最好的品牌建設成果。

業務咨詢熱線:

136 7365 2363

TOP

QQ客服

在線留言