久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Excel VBA ADO SQL入門教程009:聚合函數(shù)

 L羅樂 2018-02-23

走在風(fēng)中今天陽(yáng)光 突然好溫柔 天的溫柔地的溫柔 像你抱著我 ……


1.


什么是聚合函數(shù)?

在數(shù)據(jù)分析過程中,我們經(jīng)常需要對(duì)一組數(shù)據(jù)進(jìn)行計(jì)算,求其最大值、最小值、平均值、總和和數(shù)目等,,這種行為我們稱之為聚合分析;而用來實(shí)現(xiàn)聚合分析的函數(shù),,我們稱之為聚合函數(shù),。

在SQL中,常用的聚合函數(shù)有SUM(總和),、MAX(最大值),,MIN(最小值),AVG(平均值)以及COUNT(計(jì)數(shù)),。

我們之前也分享過幾個(gè)函數(shù),,例如IIF,INSTR等。那么,,聚合函數(shù)和這些函數(shù)的不同之處是什么呢,?

簡(jiǎn)單說,聚合函數(shù)是對(duì)一組數(shù)據(jù)(一列或多列)進(jìn)行處理,,返回單個(gè)結(jié)果,;而普通函數(shù)則通常是對(duì)一組數(shù)據(jù)中的每條記錄進(jìn)行處理,返回的是一組結(jié)果……


2.


舉個(gè)小栗子,。

上圖所示,,是某校學(xué)生期末考試成績(jī)表。

語文最高分:

SELECT MAX(語文) AS 語文最高分 FROM [成績(jī)表$]

數(shù)學(xué)最低分:

SELECT MIN(數(shù)學(xué)) AS 數(shù)學(xué)最低分 FROM [成績(jī)表$]

四舍五入后的英語平均分:

SELECT ROUND(AVG(英語),2) AS 英語平均分 FROM [成績(jī)表$]

英語,、語文,、數(shù)學(xué)各科成績(jī)的分別總值:

SELECT SUM(語文) AS 語文總分,SUM(數(shù)學(xué)) AS 數(shù)學(xué)總分,SUM(英語) AS 英語總分  FROM [成績(jī)表$]

總分最高分:

SELECT MAX(語文 數(shù)學(xué) 英語) AS 總分最高分 FROM [成績(jī)表$] 


3.


重點(diǎn)說下聚合函數(shù)COUNT(計(jì)數(shù)),這位比較有意思,。


COUNT(*)和COUNT(字段)

COUNT(*)可以返回指定表的記錄總行數(shù)(默認(rèn)情況下不包含標(biāo)題行),,需要說明的重點(diǎn)是,對(duì)于Excel而言,,它不會(huì)忽略空白行,;對(duì)于數(shù)據(jù)庫(kù)而言,它不會(huì)忽略整行NULL值的記錄,。

例如以下語句,計(jì)算結(jié)果為8,,非7,,計(jì)算結(jié)果包含了第5行的空白行。

SELECT COUNT(*) AS 學(xué)生人數(shù)  FROM [成績(jī)表$]

但當(dāng)COUNT用于計(jì)算指定字段時(shí),,它會(huì)忽略Excel的空白值以及數(shù)據(jù)庫(kù)的NULL,。

例如以下語句,計(jì)算結(jié)果為7,,忽略了第5行的空白行,。

SELECT COUNT(姓名) AS 學(xué)生人數(shù)  FROM [成績(jī)表$]

小貼士:

在SQL in Excel中,盡量不要使用COUNT(*)語句,,除非已進(jìn)行了條件篩選,,例如使用WHERE子句等。

這是因?yàn)樵贓xcel中,,SQL默認(rèn)讀取的是整張表格的UsedRange區(qū)域(可以簡(jiǎn)單理解成表格內(nèi)已使用的單元格所構(gòu)成的最大矩形區(qū)域),。例如上例中的 SELECT * FROM [成績(jī)表$] 讀取的是已使用的單元格區(qū)域A1:E9,而并非整張表格——但當(dāng)F14單元格有被使用過時(shí),,哪怕只是填充了背景色,,SQL讀取的區(qū)域也會(huì)演變成A1:F14…………這常常就會(huì)產(chǎn)生糟糕的結(jié)果……


條件計(jì)數(shù)

聚合函數(shù)搭配WHERE子句等可以實(shí)現(xiàn)多種條件統(tǒng)計(jì)。

例如以下語句可以計(jì)算語文成績(jī)及格的人數(shù):

SELECT COUNT(*) AS 語文及格人數(shù) FROM [成績(jī)表$] WHERE 語文>=60

更多關(guān)于WHERE子句的應(yīng)用(單條件、多條件,、模糊條件等)參考前文:

Excel VBA ADO SQL入門教程007:條件查詢(上)

Excel VBA ADO SQL入門教程008:條件查詢(下)

……

這里需要說明的是邏輯值(TRUE和FALSE)在SQL中的一種應(yīng)用,。

例如,以下語句可以計(jì)算三科成績(jī)均及格的人數(shù):

SELECT COUNT(*) AS 三科均及格人數(shù) FROM [成績(jī)表$] WHERE 語文>=60 AND 數(shù)學(xué)>=60 AND 英語>=60

但上述SQL語句也可以寫成:

SELECT COUNT(*) AS 三科均及格人數(shù) FROM [成績(jī)表$] WHERE (語文>=60) (數(shù)學(xué)>=60) (英語>=60)=-3

負(fù)3是什么鬼,?

我們知道在EXCEL中,,當(dāng)進(jìn)行數(shù)學(xué)運(yùn)算時(shí),邏輯值TRUE等于1,,F(xiàn)ALSE等于0,,但在SQL In Excel 中并非如此。

在SQL中,,邏輯值FALSE依然等于0,,但TRUE則等于-1。當(dāng)三個(gè)條件均為真時(shí),,也就是-1 -1 -1,,其結(jié)果必然等于-3,以此即可判斷三條件是否均成立,。

知道這個(gè)知識(shí)點(diǎn)有什么用處,?

例如下面這個(gè)問題:

計(jì)算三科成績(jī)中至少有兩科及格的人數(shù)。

使用邏輯值運(yùn)算技巧,,如下即可:

SELECT COUNT(*) AS 至少兩科及格人數(shù) FROM [成績(jī)表$] WHERE (語文>=60) (數(shù)學(xué)>=60) (英語>=60)<=-2

計(jì)算三科成績(jī)中至少有兩科及格的學(xué)生名單,。

SELECT * FROM [成績(jī)表$] WHERE (語文>=60) (數(shù)學(xué)>=60) (英語>=60)<=-2

……

……

圖文作者:看見星光

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多