更新時間:2024-04-30 21:14:26作者:佚名
1.什么是聚合函數? 在數據分析過程中,我們經常需要對一組數據進行計算,找出其最大值、最小值、平均值、總和和個數等,這種行為稱為聚合分析; 而用來實現聚合分析的函數職場英語成績查詢,我們稱之為聚合函數。 在SQL中,常用的聚合函數有SUM(求和)、MAX(最大值)、MIN(最小值)、AVG(平均值)和COUNT(計數)。 之前我們也分享過幾個函數,比如IIF、INSTR等,那么職場英語成績查詢,聚合函數和這些函數有什么區別呢? 簡單地說,聚合函數處理一組數據(一個或多個列)并返回單個結果; 而普通函數通常會處理一組數據中的每條記錄并返回一組結果... 2 。 舉個小栗子。
上圖是某學校學生期末考試成績表。 中文最高分:MAX(中文)AS 中文最高分FROM【分數表$】
數學最低分數:MIN(數學) AS 數學最低分數 FROM [分數表$]
四舍五入后英語平均分:ROUND(AVG(),2) AS 英語平均分 FROM [分數表$]
英語、語文、數學科目總成績分別為:SUM(語文)AS語文總分、SUM(數學)AS數學總分、SUM(英語)AS英語總分FROM【成績表$】
最高總分:MAX(語文+數學+英語)AS 最高總分FROM【成績表$】
3.我們重點關注聚合函數COUNT,這個函數相當有趣。 3.1 COUNT(*)和COUNT(field) COUNT(*)可以返回指定表中記錄的總行數(默認不包括表頭行)。 需要注意的一點是,對于 Excel,它不會忽略空白行; 對于數據庫來說,它不會忽略整行NULL值記錄。 例如,在下面的語句中,計算結果是 8留學之路,而不是 7。計算結果包括第 5 行中的空行。 COUNT(*) AS 學生人數 FROM [成績表$]
但當使用COUNT計算指定字段時,它會忽略Excel中的空白值和數據庫中的NULL。 例如,在下面的語句中,計算結果為 7,忽略第 5 行的空行。 COUNT(name) AS of FROM [score table$]
Tips:Excel中的SQL中,盡量不要使用COUNT(*)語句,除非進行了條件過濾,例如使用WHERE子句。
這是因為在Excel中,SQL默認讀取整個表格區域(可以簡單理解為表格中已使用的單元格形成的最大矩形區域)。
例如,上例中的 * FROM [Grade Table$] 讀取的是使用的單元格區域 A1:E9,而不是整個表格 - 但當使用單元格 F14 時,即使只填充了背景色,讀取的區域SQL也會演變成A1:F14...這往往會產生不好的結果...
3.2 條件計數聚合函數結合WHERE子句可以實現多種條件統計。 例如,下面的語句可以計算通過中文的人數: COUNT(*) AS 中文通過的人數 FROM [score table$] WHERE >=60
更多關于WHERE子句的應用(單條件、多條件、模糊條件等)可以參考之前的文章:
Excel VBA+ADO+SQL入門教程007:如何使用SQL進行條件查詢?
Excel VBA+ADO+SQL入門教程008:條件查詢(第2部分)...
這里需要說明的是邏輯值(TRUE和FALSE)在SQL中的一個應用。 例如,下面的語句可以計算三科全部通過的人數: COUNT(*) AS 三科全部通過的人數 FROM [score table$] WHERE >=60 AND >=60 AND >=60
但上面的SQL語句也可以寫成: COUNT(*) AS 三科全部通過的人數 FROM [成績表$] WHERE (語文>=60)+(數學>=60)+(英語>=60 )=-3
負3到底是什么?
我們知道,在EXCEL工作表函數中,進行數學運算時,邏輯值TRUE等于1,FALSE等于0,但在Excel中的SQL中卻不是這樣。
在SQL中,邏輯值FALSE仍然等于0,但TRUE等于-1。 當三個條件都成立時,即-1+-1+-1,結果必須等于-3。 這可以用來確定這三個條件是否成立。
知道這個知識點有什么用呢? 例如這個問題:
計算通過三門科目中至少兩門的學生人數。
使用邏輯值運算技巧,如下: COUNT(*) AS 至少通過兩門科目的人數 FROM [成績表$] WHERE (語文>=60)+(數學>=60)+(英語>=60) =60) +(數學>=60)+(英語>=60)