Excel 執(zhí)行SQL查詢(xún)函數(shù)
之前給大家介紹過(guò),利用Excel內(nèi)置的SQL查詢(xún)引擎,來(lái)執(zhí)行查詢(xún)操作。通過(guò)編寫(xiě)SQL查詢(xún)語(yǔ)句,可以完成Excel內(nèi)置函數(shù)不能夠完成的工作。帶好筆紙做筆記吧,下面通過(guò)幾個(gè)案例,介紹SQL查詢(xún)語(yǔ)句的基本用法,如果有類(lèi)似的工作,只需要更改幾個(gè)地方就可以了。當(dāng)然如果條件允許,還是建議你系統(tǒng)學(xué)習(xí)一下SQL語(yǔ)句,提升下綜合技能。因?yàn)镋xcel內(nèi)置引擎網(wǎng)絡(luò)上資料很少,大家可以以SQLSERVER (都是微軟的產(chǎn)品,雖有區(qū)別,但還是有很大的相通的地方的)教程為模板學(xué)習(xí),網(wǎng)絡(luò)上資料很多。
使用Excel進(jìn)行數(shù)據(jù)處理,不外乎兩種應(yīng)用場(chǎng)景:
- 數(shù)據(jù)匹配(數(shù)據(jù)查找)
- 數(shù)據(jù)聚類(lèi)(求和,平均,總數(shù))
數(shù)據(jù)素材
數(shù)據(jù)素材為從GitHub上獲取關(guān)于COVID-19數(shù)據(jù)集。如果大家需要素材,請(qǐng)留言回復(fù)“ETSQL”獲取練習(xí)素材。
這里面要用到一個(gè)函數(shù)ETSQL,它是EFunction內(nèi)置的函數(shù)。
數(shù)據(jù)素材包括全球和國(guó)內(nèi)的數(shù)據(jù)
案例1:數(shù)據(jù)匹配
“國(guó)家”Sheet表格內(nèi)對(duì)應(yīng)的是,各個(gè)省份每天累計(jì)數(shù)據(jù)和新增數(shù)據(jù)。假如需要提取出來(lái)上海每天的數(shù)據(jù)信息。則SQL語(yǔ)句為:
select * from [國(guó)家$] as a where a.省份='上海市'
對(duì)于學(xué)習(xí)過(guò)SQL語(yǔ)句的朋友來(lái)說(shuō),Excel內(nèi)置引擎,SQL語(yǔ)句和其他關(guān)系數(shù)據(jù)庫(kù)的查詢(xún)語(yǔ)法基本相同。對(duì)于未接觸SQL語(yǔ)句的朋友來(lái)說(shuō),可以這樣簡(jiǎn)單理解。
- select 關(guān)鍵詞是必須的,表示要查詢(xún)一個(gè)信息關(guān)鍵詞,每個(gè)語(yǔ)句必須有的。
- from 關(guān)鍵詞也是必須的,表示從什么地方查詢(xún),Excel表格表示從“國(guó)家”這個(gè)Sheet之中查詢(xún)。
- where 關(guān)鍵詞也是必須的,表示是查詢(xún)的篩選條件,它后面跟著的就是篩選條件,案例之中,要求“國(guó)家”Sheet表之中,省份等于“上海市”,如果有多個(gè)條件使用關(guān)鍵詞and 或者or進(jìn)行連接。
通過(guò)以上語(yǔ)句,就能夠?qū)⑸虾C刻斓臄?shù)據(jù)全部提取出來(lái)。
從“國(guó)家”表格之中提取出上海所有信息
如果要提取出來(lái)上海市,2020-40-20日之后所有的數(shù)據(jù),則上述SQL語(yǔ)句只需要變?yōu)?/p>
- select * from [國(guó)家$] as a where a.省份='上海市' and a.日期>43941。
對(duì)于熟悉MySQL或者M(jìn)sSQL的朋友來(lái)說(shuō),Excel之中沒(méi)有“時(shí)間”類(lèi)型數(shù)據(jù),Excel之中只有數(shù)值類(lèi)型數(shù)據(jù),Excel之中是以數(shù)字表示時(shí)間的,43941就對(duì)應(yīng)2020-40-20這一天。當(dāng)然在實(shí)際應(yīng)用過(guò)程之中,可以使用公式進(jìn)行拼接SQL語(yǔ)句,Excel會(huì)自動(dòng)將日期轉(zhuǎn)化為數(shù)字類(lèi)型數(shù)據(jù)處理的。
案例之中,就是將B1和F1單元格內(nèi)的數(shù)據(jù),進(jìn)行拼接到A1單元格之中,Excel自動(dòng)生成SQL完整語(yǔ)句。
SQL拼接
如果學(xué)習(xí)好了SQL查詢(xún)語(yǔ)句后,再配合ETSQL函數(shù),Excel之中所有匹配函數(shù)就可以說(shuō)拜拜了。當(dāng)然SQL語(yǔ)句編寫(xiě)起來(lái)沒(méi)有專(zhuān)用的函數(shù)方便。但SQL很適合用來(lái)進(jìn)行復(fù)雜數(shù)據(jù)匹配工作,這點(diǎn)VLOOKUP,match等函數(shù),是萬(wàn)萬(wàn)沒(méi)有這個(gè)技能的。所以說(shuō)沒(méi)有最好的工具,只有適合的工具。
案例2:數(shù)據(jù)聚合(求和,平均、計(jì)數(shù))
如果要統(tǒng)計(jì)上海市,每天新增人數(shù)的累加和-累計(jì)確診人數(shù)時(shí),這個(gè)時(shí)候,就可以應(yīng)用到SQL另外一個(gè)強(qiáng)大的功能,數(shù)據(jù)聚合,這個(gè)功能很像Excel自帶的透視表功能,這相當(dāng)于透視表函數(shù)化了,我們把Excel語(yǔ)句寫(xiě)好了,只需要F9刷新數(shù)據(jù)就OK了?;菊Z(yǔ)句為
- select sum(當(dāng)日新增) from [國(guó)家$] as a where a.省份='上海市'
上述語(yǔ)句通過(guò)SQL引擎的sum函數(shù)(需要注意這個(gè)sum和Excel函數(shù)SUM的區(qū)別),統(tǒng)計(jì)“當(dāng)日新增”這個(gè)字段數(shù)據(jù)的和,條件是省份為上海市。
如果說(shuō)我要統(tǒng)計(jì)上海市每天的平均新增人數(shù),該怎么寫(xiě):
- select avg(當(dāng)日新增) from [國(guó)家$] as a where a.省份='上海市'
只需要把sum替換為avg求平均函數(shù)就OK了。如果要統(tǒng)計(jì)上海市有多少天有新增確診記錄時(shí),則條件SQL語(yǔ)句為:
- select count(當(dāng)日新增) from [國(guó)家$] as a where a.省份='上海市' and a.當(dāng)日新增>0
count函數(shù)為計(jì)數(shù)統(tǒng)計(jì)函數(shù),同時(shí)添加了另外一個(gè)條件,就是添加了當(dāng)日新增人數(shù)大于“0”值的數(shù)據(jù)。
以上介紹的聚合,是通過(guò)where條件來(lái)了,如果說(shuō)我要統(tǒng)計(jì)全國(guó)所有省份總確診人數(shù),總不能連續(xù)寫(xiě)30多個(gè)SQL語(yǔ)句吧!
- 正常的SQL語(yǔ)句為:select a.省份,sum(a.當(dāng)日新增) from [國(guó)家$] as a group by a.省份
這個(gè)使用到的是group by 關(guān)鍵詞。這個(gè)特點(diǎn)是不是很像Excel的透視表。group by后面相當(dāng)于透視表“行”條件,select 后面相當(dāng)于透視表的“列”條件,sum或者count或者avg相當(dāng)于透視表的“值”
統(tǒng)計(jì)累計(jì)確診人數(shù)
以上統(tǒng)計(jì)出來(lái)的結(jié)果是雜亂無(wú)章的,這個(gè)時(shí)候稍加改動(dòng)就可以排序了
select a.省份,sum(a.當(dāng)日新增) from [國(guó)家$] as a group by a.省份 order by sum(a.當(dāng)日新增) desc
排好序的統(tǒng)計(jì)結(jié)果
order by 關(guān)鍵詞后就是排序條件,將統(tǒng)計(jì)出來(lái)的 sum(a.當(dāng)日新增) 進(jìn)行排序,desc表示降序。如果要升序的話(huà),可以省略或者寫(xiě)上asc。為了增加SQL語(yǔ)句可讀性,建議你寫(xiě)上。
小結(jié)
通過(guò)以上介紹,可以知道利用ETSQL一個(gè)函數(shù),通過(guò)不同的SQL語(yǔ)句,就可以完成Excel自帶的函數(shù)幾乎所有功能,是不是很強(qiáng)大。這里并不是說(shuō)不用學(xué)習(xí)其他函數(shù)了,SQL語(yǔ)句適合用來(lái)解決復(fù)雜的問(wèn)題,以下列出的案例需求,Excel單獨(dú)一個(gè)函數(shù)是不能夠完成的。
- 截止到某天總確診人數(shù)的TOP3省份
- 匹配出來(lái)每個(gè)省份新增確認(rèn)記錄是哪天
- 匹配出來(lái)大于平均值所有省份
ETSQL復(fù)雜統(tǒng)計(jì)
因?yàn)镾QL是系統(tǒng)性知識(shí),在這里碼字確實(shí)困難。不知有無(wú)必要錄制視頻,來(lái)系統(tǒng)介紹Excel內(nèi)置SQL引擎基本知識(shí)。大家如果有需要,請(qǐng)留言“SQL視頻關(guān)鍵詞”,告知下,同時(shí)添加關(guān)注,以免視頻更新時(shí),錯(cuò)過(guò)了。