本篇內(nèi)容介紹了“用于數(shù)據(jù)分析的SQL技術(shù)有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元云城做網(wǎng)站,已為上家服務(wù),為云城各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
了解數(shù)據(jù)集
學(xué)習(xí)數(shù)據(jù)分析的最好方法是什么?通過在一個數(shù)據(jù)集上執(zhí)行它!
為此,我創(chuàng)建了一個零售商店的虛擬數(shù)據(jù)集??蛻魯?shù)據(jù)表由ConsumerDetails表示。
我們的數(shù)據(jù)集由以下列組成:
Name –消費(fèi)者的名稱
Locality –客戶所在地
Total_amt_spend –消費(fèi)者在商店中花費(fèi)的總金額
Industry –它表示消費(fèi)者所屬的行業(yè)
注:我們將使用MySQL5.7進(jìn)行實驗。
SQL技術(shù)1–計算行和項
Count函數(shù)
我們將從最簡單的查詢開始分析,即計算表中的行數(shù)。我們將使用函數(shù)COUNT()來完成此操作。
太好了!現(xiàn)在我們知道表中的行數(shù)是10。在一個小的測試數(shù)據(jù)集上使用這個函數(shù)似乎沒用。但是當(dāng)你的行數(shù)達(dá)到數(shù)百萬時,它會有很大的幫助!
Distinct函數(shù)
很多時候,我們的數(shù)據(jù)表中充滿了重復(fù)的值。為了獲得獨(dú)一的值,我們使用了不同的函數(shù)。
在我們的數(shù)據(jù)集中,我們?nèi)绾握业娇蛻羲鶎俚男袠I(yè)?
你猜對了。我們可以通過使用DISTINCT函數(shù)來實現(xiàn)這一點。
你甚至可以使用count和distinct一起計算唯一行的數(shù)量。你可以參考以下查詢:
SQL技術(shù)2–聚合函數(shù)
聚合函數(shù)是任何數(shù)據(jù)分析的基礎(chǔ)。它們?yōu)槲覀兲峁┝藬?shù)據(jù)集的概述。我們將討論的一些函數(shù)是–SUM()、AVG()和STDDEV()。
SUM函數(shù)
我們使用SUM()函數(shù)計算表中數(shù)值列的和。
我們來計算一下每位顧客的消費(fèi)總額:
在上面的例子中,sum_all是存儲sum值的變量。消費(fèi)者的消費(fèi)總額是12560盧比。
AVG函數(shù)
AVG()函數(shù)計算平均值。讓我們找出消費(fèi)者對我們零售店的平均支出:
顧客在零售店的平均消費(fèi)額為1256盧比。
STDDEV函數(shù)
如果你查看了數(shù)據(jù)集,然后查看了消費(fèi)者的平均支出值,你會發(fā)現(xiàn)有些東西遺漏了。平均值并不能提供完整的理解,所以讓我們找到另一個重要的指標(biāo)——標(biāo)準(zhǔn)差。函數(shù)為STDDEV()。
標(biāo)準(zhǔn)差為829.7,這意味著消費(fèi)者的支出之間存在很大差距!
SQL技術(shù)3–極值識別
下一種類型的分析是確定極值,這將有助于你更好地理解數(shù)據(jù)。
Max函數(shù)
可以使用MAX()函數(shù)標(biāo)識最大數(shù)值。讓我們看看如何應(yīng)用它:
消費(fèi)者在零售店的最高消費(fèi)額是3000盧比。
Min函數(shù)
與max函數(shù)類似,我們有MIN()函數(shù)來標(biāo)識給定列中的最小數(shù)值:
零售店消費(fèi)者的最低消費(fèi)額是350盧比。
SQL技術(shù)4–數(shù)據(jù)切片
現(xiàn)在,讓我們關(guān)注數(shù)據(jù)分析中最重要的部分之一——數(shù)據(jù)切片。分析的這一部分將構(gòu)成高級查詢的基礎(chǔ),并幫助你根據(jù)某種條件檢索數(shù)據(jù)。
假設(shè)零售店希望找到來自某個地方的客戶,特別是Shakti Nagar和Shanti Vihar地區(qū)。
太好了,我們有3個客戶!我們使用WHERE子句根據(jù)消費(fèi)者應(yīng)該居住在當(dāng)?shù)氐臈l件篩選出數(shù)據(jù)—Shakti Nagar和Shanti Vihar。
我沒有在這里使用OR條件。相反,我使用了IN運(yùn)算符,它允許我們在WHERE子句中指定多個值。
我們需要找到那些居住在特定地區(qū)(Shakti Nagar和Shanti Vihar)且消費(fèi)金額超過2000盧比的客戶。
在我們的數(shù)據(jù)集中,只有Shantanu和Natasha滿足這些條件。由于這兩個條件都需要滿足,所以和條件更適合這里。讓我們看看另一個例子。
這一次,零售店希望找回所有消費(fèi)在1000盧比到2000盧比之間的消費(fèi)者,以便推出特別的營銷優(yōu)惠。
另一種寫同樣語句的方法是:
只有Rohan在滿足這個標(biāo)準(zhǔn)!
太好了!我們已經(jīng)走到一半了。讓我們在迄今所獲得的知識基礎(chǔ)上再接再厲。
SQL技術(shù)5–限制數(shù)據(jù)
Limit
假設(shè)我們要查看由數(shù)百萬條記錄組成的數(shù)據(jù)表。我們不能直接使用SELECT語句,因為這會將整個表轉(zhuǎn)儲到我們的屏幕上,這既麻煩又計算密集。我們可以使用Limit:
上面的SQL命令幫助我們顯示表的前5行。
OFFSET
如果你只想選擇第四行和第五行,你會怎么做?我們將使用OFFSET。OFFSET將跳過指定的行數(shù)。讓我們看看它是如何工作的:
SQL技術(shù)6–數(shù)據(jù)排序
對數(shù)據(jù)進(jìn)行分類有助于我們對數(shù)據(jù)進(jìn)行觀察。我們可以使用關(guān)鍵字ORDER by來執(zhí)行排序過程。
ORDER BY
關(guān)鍵字可用于按升序或降序?qū)?shù)據(jù)進(jìn)行排序。默認(rèn)情況下,ORDER BY關(guān)鍵字按升序?qū)?shù)據(jù)排序。
讓我們看一個示例,其中我們根據(jù)Total_amt_spend列按升序?qū)?shù)據(jù)進(jìn)行排序:
要將數(shù)據(jù)集按降序排序,可以按照以下命令進(jìn)行操作:
SQL技術(shù)7–過濾模式
在前面的部分中,我們學(xué)習(xí)了如何根據(jù)一個或多個條件過濾數(shù)據(jù)。在這里,我們將學(xué)習(xí)匹配指定的模式列。為此,我們將首先了解LIKE運(yùn)算符和通配符。
LIKE
LIKE在WHERE子句中用于搜索列中的指定模式。
通配符
通配符用于替換字符串中的一個或多個字符。它們與LIKE運(yùn)算符一起使用。最常見的兩個通配符是:
%,表示0個或更多個字符
_,它代表一個字符
在我們的虛擬零售數(shù)據(jù)集中,假設(shè)我們想要所有以“Nagar”結(jié)尾的地區(qū)。花點時間來理解問題陳述,并思考如何解決這個問題。
讓我們試著把這個問題分解一下。我們需要以“Nagar”結(jié)尾的所有位置,并且在這個特定字符串之前可以有任意數(shù)量的字符。因此,我們可以在“Nagar”之前使用“%”通配符:
太棒了,我們有6個地方以這個名字結(jié)尾。注意,我們使用LIKE操作符來執(zhí)行模式匹配。
接下來,我們將嘗試解決另一個基于模式的問題。我們需要第二個字符在他們各自的名字中有“a”的消費(fèi)者的名字。
再一次,我建議你花點時間來理解這個問題,并想出一個解決它的邏輯。
讓我們把問題分解一下。這里,第二個字符需要是“a”。第一個字符可以是任何字符,所以我們用通配符_。
在第二個字符之后,可以有任意數(shù)量的字符,因此我們將這些字符替換為通配符“%”。最終的模式匹配如下所示:
我們有6個人滿足了這個條件。
SQL技術(shù)8–分組、匯總數(shù)據(jù)和分組篩選
我們終于到了SQL中最強(qiáng)大的分析工具之一,使用GROUP BY語句對數(shù)據(jù)進(jìn)行分組。
這個語句最有用的應(yīng)用是尋找分類變量的分布。這是通過使用GROUPBY語句和聚合函數(shù)(如–COUNT、SUM、AVG等)來完成的。
讓我們用一個問題陳述來更好地理解這一點。零售商店希望找到與其所屬行業(yè)對應(yīng)的客戶數(shù)量:
我們注意到,屬于不同行業(yè)的客戶數(shù)量或多或少是相同的。因此,讓我們改成根據(jù)客戶所屬行業(yè)分組,計算出他們的支出總額:
我們可以觀察到,消費(fèi)金額最大的是屬于制造業(yè)的客戶。這看起來有點容易,對吧?讓我們繼續(xù)更改要求,讓它變得更復(fù)雜。
現(xiàn)在,零售商希望找到總銷售額大于2500的行業(yè)。為了解決這個問題,我們將再次根據(jù)行業(yè)數(shù)據(jù)進(jìn)行分組,然后使用HAVING子句。
HAVING
HAVING子句與WHERE子句類似,但僅用于過濾分組的數(shù)據(jù)。記住,它總是在group by語句之后。
我們只有3個類別滿足條件-航空,國防和制造業(yè)。但為了更清楚,我還將添加ORDER BY關(guān)鍵字,使其更直觀:
“用于數(shù)據(jù)分析的SQL技術(shù)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!