日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

十分钟搞懂SQL数据分析

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

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

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

(一)基本介紹

1.1 SQL是啥?

一門查詢數據庫的編程語言。

1.2 SQL能操作誰?

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

1.3 SQL語句

通過SQL語句,可在數據庫中查到想要的數據。SQL語句由三部分組成,關鍵字、表名、列名。

(二) SELECT語句

2.1 “*”號代表所有列

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

2.2 DISTINCT去重

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

2.3 ORDER BY排序

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

2.3.1兩列排序

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

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

2.3.2業務場景

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

2.4LIMIT限制行數

LIMIT關鍵詞可限制查詢行數。LIMIT用法有二。用法一,返回表的前X行;用法二,返回表的特定行。

2.4.1返回前X行

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

2.4.2返回特定行

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

2.5語句執行順序

數據庫執行SQL代碼的順序不是按照抒寫的順序來執行,而是按照特點關鍵字的順序來執行,執行順序為:FROM->WHERE->GROUP BY ->HAVING ->SELECT ->ORDER

(三) 過濾數據

3.1 WHERE過濾

3.1.1大于小于

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

WHERE price > 1000 能選出價格大于1000的數據;

WHERE price < 200 能選出價格小于200的數據;

WHERE 700 < price< 1000 能選出價格大于700且小于1000的數據。

實操效果見下圖。

3.1.2等于

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

3.1.3業務場景

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

3.2 BETWEEN過濾

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

3.3 IN或 NOT IN過濾

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

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

3.4 NULL過濾

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

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

3.4通配符過濾

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

3.4.1 %百分號

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

3.4.2 _下劃線

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

3.5正則表達式

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

3.6多條件過濾

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

(四)處理字段

4.1拼接字段

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

4.2計算字段

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

(五)處理數據

處理數據分為三類:處理文本,處理時間,處理數值。對應的三類函數分別為“文本處理函數”,“時間處理函數“,“數值處理函數”。

5.1文本處理函數

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

5.2時間處理函數

下圖是對時間處理函數的總結和解釋。

5.3數值處理函數

下圖是對數值處理函數的總結和說明。

(六)聚合函數

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

“計數函數”, 例如COUNT(price),對price列的行數進行計數。

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

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

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

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

(七)分組數據

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

(八)CASE WHEN 搜索

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

(九)窗口函數

窗口函數可分為“聚合函數的窗口函數”和“專用窗口函數”。基本語法:<窗口函數> OVER ( [PARTITION BY <>]ORDER BY <>)

9.1聚合函數的窗口函數

實操效果和關鍵詞詳見下圖。

9.2專用窗口函數

RANK函數會出現相同排序,和“跳序”

DENSE_RANK函數,會出現相同排序,但無“跳序”

ROW_NUMBER函數,不存在重復的排序。

(十)子查詢

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

(十一)多表連接

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

以左連接為例,Product表為左表,連接Price表,關聯字段為product_id。返回結果:保留左表product表的所有數據,并保留Price表中product_id 為1和3的數據,詳情見下圖。

(十二)組合查詢

組合查詢可實現多個SELECT語句的同時查詢,并將查詢結果作為單個結果集返回。關鍵詞“UNION”可對結果集進行去重,“UNION ALL”不能對結果集進行去重。

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

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

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

轉 https://www.sohu.com/a/344088239_692358

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。