日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

十分钟搞懂SQL数据分析

發(fā)布時間:2024/8/26 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 十分钟搞懂SQL数据分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文重點在于快速讓讀者對“SQL數(shù)據(jù)分析”有全面認(rèn)識。其次,詳解SQL部分關(guān)鍵詞或函數(shù),并用實操后的結(jié)果向大家展示SQL數(shù)據(jù)分析。

下面的框架圖展示了本文的行文順序,第(一)部分介紹SQL基本概念,第(二)到(十二)部分,講解SQL關(guān)鍵詞和業(yè)務(wù)場景。文章末尾處展現(xiàn)了完整的“SQL數(shù)據(jù)分析”框架圖。

(一)基本介紹

1.1 SQL是啥?

一門查詢數(shù)據(jù)庫的編程語言。

1.2 SQL能操作誰?

SQL可操作關(guān)系型數(shù)據(jù)庫,但不能操作非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫可簡單理解為由行和列組成的二維表。關(guān)系型數(shù)據(jù)庫分為開源和收費兩類,開源的數(shù)據(jù)庫系統(tǒng)有MySQL、PostgreSQL, 收費有Oracle、SQL Server, DB2。以上系統(tǒng)盡管有不同的SQL語法,但大同小異,學(xué)會一種即可,本文選用MySQL。

1.3 SQL語句

通過SQL語句,可在數(shù)據(jù)庫中查到想要的數(shù)據(jù)。SQL語句由三部分組成,關(guān)鍵字、表名、列名。

(二) SELECT語句

2.1 “*”號代表所有列

“*”號能選出表中所有的列。例如代碼:SELECT * FROM Table, 此代碼會選出Table表中所有的列。

2.2 DISTINCT去重

DISTINCT關(guān)鍵詞,能對表中一列或多列信息進(jìn)行去重。以下圖為例,DISTINCT 關(guān)鍵字對列名“product_type”去重,列中兩個“辦公”會變成去重后的一個“辦公”,“服裝”和“廚房”也有同樣去重效果 。

2.3 ORDER BY排序

ORDER BY 的作用是排序,可對一列或多列排序。下圖展示了對兩列同時進(jìn)行排序的例子。

2.3.1兩列排序

代碼:“ORDER BY department,salary”,作用是先對department的各個部門排序,其次,基于已排序部門的基礎(chǔ)上再對salary進(jìn)行排序(默認(rèn)升序)。

首先,對部門finance ,marketing,technology按照26個英文字母的升序進(jìn)行排序,部門依次被排為finance第一,marketing第二,technology第三。其次,當(dāng)同一部門出現(xiàn)多個員工時,再按照salary大小進(jìn)行升序排序, 比如,部門的Joe、Sam、Jason被分別排為第一,第二,第三。詳情見下圖。

2.3.2業(yè)務(wù)場景

高鐵買票時,會用到價格排序,出發(fā)時間、耗時長短;淘寶血拼時,會用到價格排序;大眾點評找美食時,會用到距離優(yōu)先、好評優(yōu)先等。顧客在使用這些功能時,后臺數(shù)據(jù)庫用到的就是簡單但強(qiáng)大的“ORDER BY”語句。

2.4LIMIT限制行數(shù)

LIMIT關(guān)鍵詞可限制查詢行數(shù)。LIMIT用法有二。用法一,返回表的前X行;用法二,返回表的特定行。

2.4.1返回前X行

舉例, LIMIT 5, 返回表的前5行。

2.4.2返回特定行

舉例, LIMIT 5,10, 從第6行開始,返回10行。

2.5語句執(zhí)行順序

數(shù)據(jù)庫執(zhí)行SQL代碼的順序不是按照抒寫的順序來執(zhí)行,而是按照特點關(guān)鍵字的順序來執(zhí)行,執(zhí)行順序為:FROM->WHERE->GROUP BY ->HAVING ->SELECT ->ORDER

(三) 過濾數(shù)據(jù)

3.1 WHERE過濾

3.1.1大于小于

WHERE語句能選出特定范圍的數(shù)據(jù),分為三類:①大于,②小于,③大于且小于。以字段“price”為例對此三類進(jìn)行解釋。

WHERE price > 1000 能選出價格大于1000的數(shù)據(jù);

WHERE price < 200 能選出價格小于200的數(shù)據(jù);

WHERE 700 < price< 1000 能選出價格大于700且小于1000的數(shù)據(jù)。

實操效果見下圖。

3.1.2等于

WHERE語句能選出等于特定數(shù)值或文字的數(shù)據(jù),比如,WHERE price = 388, 可選出價格為388的數(shù)據(jù);再比如,WHERE hotel =‘希爾頓’能選出酒店為“希爾頓”的數(shù)據(jù)。見下圖。

3.1.3業(yè)務(wù)場景

京東、淘寶、天貓、攜程的官網(wǎng)和APP,均提供“價格區(qū)間”和“品牌篩選”的功能,背后的代碼就是WHERE語句。

3.2 BETWEEN過濾

WHERE BETWEEN也能篩出特定區(qū)間的數(shù)值,例如, WHERE price BETWEEN700 AND 1000, 能篩出價格從700到1000的數(shù)據(jù), 功能類似于“WHERE 大于且小于”。

3.3 IN或 NOT IN過濾

WHERE IN 也可篩選數(shù)據(jù),例如字段“capital_flows”(資金流向的意思)的數(shù)值可以是各個行業(yè),WHERE IN 語句能把“capital_flows”的行業(yè)限定在‘房地產(chǎn)’和‘證券’行業(yè),代碼見下圖。

業(yè)務(wù)場景:近些年“房地產(chǎn)”和“證券”成為銀保監(jiān)會重點關(guān)注的行業(yè),在銀保監(jiān)會大量的EAST報送數(shù)據(jù)中(EAST系統(tǒng)可簡單理解為檢查各家銀行數(shù)據(jù)的系統(tǒng)),如何迅速找到資金流到“房地產(chǎn)”和“證券”的數(shù)據(jù)呢?當(dāng)屬WHERE IN 語句。

3.4 NULL過濾

WHERE IS NULL 語句能從數(shù)據(jù)中快速篩選出數(shù)據(jù)為空值的記錄,代碼和實操效果見下圖。

業(yè)務(wù)場景:銀保監(jiān)會要求各家銀行提供的EAST報送數(shù)據(jù)不能為空值。例如,客戶的“社會信用代碼”,“貸款流向行業(yè)”不能為空。WHERE IS NULL語句能快速找出數(shù)據(jù)為空值的記錄。

3.4通配符過濾

通配符(“%”或“_”) 能搭配數(shù)據(jù)中的任何字符, 達(dá)到篩選數(shù)據(jù)的效果。

3.4.1 %百分號

%百分號 代表0到多個任意字符。舉例,代碼LIKE “天安門%” 會找到只有“天安門”這三個字和“天安門”后面有其他文字的數(shù)據(jù),詳情見3.4.2圖。

3.4.2 _下劃線

_下劃線 能代表1個任意字符。LIKE '天安門_' 會找到“天安門”后面有一個文字的數(shù)據(jù),比如“天安門東”。詳情見下圖。

3.5正則表達(dá)式

正則表達(dá)式是由各種符號組成的搜索模式,相比“通配符”正則表達(dá)式更加精確。下列符號能組成各種正則表達(dá)式,但種類繁多且抽象,大家感受一下即可。

3.6多條件過濾

WHERE語句中,AND和OR能把兩個或多個條件結(jié)合起來。AND: 如果第一個條件和第二個條件都成立,則顯示一條記錄;OR如果第一個條件和第二個條件只要有一個成立,則顯示一條記錄。

(四)處理字段

4.1拼接字段

CONCAT函數(shù)能把多個字段拼接起來,例如下圖,concat函數(shù)能把company和country兩個字段拼接在一起,具體代碼見文章末尾處的框架圖。

4.2計算字段

字段之間可做加減乘除運(yùn)算,例如下圖展示了,price字段 與 quantity字段相乘得出新的字段,計算結(jié)果如下圖。

(五)處理數(shù)據(jù)

處理數(shù)據(jù)分為三類:處理文本,處理時間,處理數(shù)值。對應(yīng)的三類函數(shù)分別為“文本處理函數(shù)”,“時間處理函數(shù)“,“數(shù)值處理函數(shù)”。

5.1文本處理函數(shù)

以下是對各個文本處理函數(shù)的總結(jié),第一列和第四列是分別是函數(shù)名稱和相應(yīng)的解釋;第二列和第三列分別是例子和返回的結(jié)果。

5.2時間處理函數(shù)

下圖是對時間處理函數(shù)的總結(jié)和解釋。

5.3數(shù)值處理函數(shù)

下圖是對數(shù)值處理函數(shù)的總結(jié)和說明。

(六)聚合函數(shù)

常用的聚合函數(shù)有以下五種,詳情見下圖。

“計數(shù)函數(shù)”, 例如COUNT(price),對price列的行數(shù)進(jìn)行計數(shù)。

“平均值函數(shù)”,例如AVG(price),對price列求平均值。

“求和函數(shù)”,例如SUM(price),對price列中所有值進(jìn)行求和。

“最大值函數(shù)”,例如MAX(price),找出price列中的最大值。

“最小值函數(shù)”,例如MIN(price),找出price列中的最小值。

(七)分組數(shù)據(jù)

GROUP BY關(guān)鍵詞可對數(shù)據(jù)進(jìn)行分組,HAVING可對分組后的數(shù)據(jù)進(jìn)行過濾。舉例,GROUP BY將列"bedrooms”中數(shù)量為2、3、4的數(shù)據(jù)各分為一組;HAVING 又能把數(shù)量大于2的分組后數(shù)據(jù)篩選出來。若覺得抽象,請參考下圖。

(八)CASE WHEN 搜索

CASE WHEN搜索語句是一種條件表達(dá)式,可實現(xiàn)對定量數(shù)據(jù)的定性描述。舉例,可將兩個臥室描述為“小”,三個臥室描述為“適中”,四個臥室描述為“大”, 請參考下圖。

(九)窗口函數(shù)

窗口函數(shù)可分為“聚合函數(shù)的窗口函數(shù)”和“專用窗口函數(shù)”?;菊Z法:<窗口函數(shù)> OVER ( [PARTITION BY <>]ORDER BY <>)

9.1聚合函數(shù)的窗口函數(shù)

實操效果和關(guān)鍵詞詳見下圖。

9.2專用窗口函數(shù)

RANK函數(shù)會出現(xiàn)相同排序,和“跳序”

DENSE_RANK函數(shù),會出現(xiàn)相同排序,但無“跳序”

ROW_NUMBER函數(shù),不存在重復(fù)的排序。

(十)子查詢

子查詢是嵌套在主查詢中的查詢,可以簡單理解為在SELECT語句中又嵌套一個SELECT語句。理論上,子查詢可嵌套在各個位置,但在實際工作中,主要嵌套在SELECT、WHERE、HAVING等關(guān)鍵詞后面。

(十一)多表連接

一張表往往難以查詢到需要的所有字段,多表連接可以同時查詢多個表的字段,把不同表中的字段進(jìn)行橫向拼接,以滿足在多表中各個字段的查詢。多表連接主要分為內(nèi)連接、左連接、右連接、全連接、交叉連接。

以左連接為例,Product表為左表,連接Price表,關(guān)聯(lián)字段為product_id。返回結(jié)果:保留左表product表的所有數(shù)據(jù),并保留Price表中product_id 為1和3的數(shù)據(jù),詳情見下圖。

(十二)組合查詢

組合查詢可實現(xiàn)多個SELECT語句的同時查詢,并將查詢結(jié)果作為單個結(jié)果集返回。關(guān)鍵詞“UNION”可對結(jié)果集進(jìn)行去重,“UNION ALL”不能對結(jié)果集進(jìn)行去重。

(十三)結(jié)束語及完整框架圖

本文已對“SQL數(shù)據(jù)分析”進(jìn)行梳理,并對某些關(guān)鍵詞和語句進(jìn)行了詳解。筆者梳理出“SQL數(shù)據(jù)分析”的完整框架圖送給大家,希望對你們有幫助。

團(tuán)隊介紹:我們是畢馬威旗下的專業(yè)數(shù)據(jù)挖掘團(tuán)隊,微信公眾號(kpmgbigdata)每周六晚8點準(zhǔn)時推送一篇原創(chuàng)數(shù)據(jù)科學(xué)文章。我們的作品都由項目經(jīng)驗豐富的博士或資深顧問精心準(zhǔn)備,分享結(jié)合實際業(yè)務(wù)的理論應(yīng)用和心得體會。歡迎大家關(guān)注我們的微信公眾號,關(guān)注原創(chuàng)數(shù)據(jù)挖掘精品文章;您也可以在公眾號中直接發(fā)送想說的話,與我們聯(lián)系交流。

轉(zhuǎn) https://www.sohu.com/a/344088239_692358

總結(jié)

以上是生活随笔為你收集整理的十分钟搞懂SQL数据分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。