七、MySQL數據庫之聚合函數

上一講我們說了這個SELECT查詢,其中有很多種查詢類型,最後一個的時候我們說了一下這個GROUP BY的查詢。這個呢就是配合我們這一篇博客的聚合函數一起使用的,讓我們來學習一下

聚合函數

我們先來介紹一下這個聚合函數是什麼

這個聚合函數啊,就是人家MySQL給我們提供的一組函數,用來計算一些東西的。而這個也被叫做這個組函數,這個聚合函數人家也說了,這個會和這個GROUP BY一起使用,HAVING我們後面說,先了解一下。

聚合函數有那些

聚合函數具體有多少,我建議大家去看MySQL官方提供的文檔,不要去其他地方看,原因有幾個

1. 其他人提供的也會不全

2. 一個人一種理解,要去看官方的介紹,專業。

我這裏呢,主要說幾個大家常用的聚合函數,當然啦,沒說到的,或者是以後再見到的,我們再去自己學習。

COUNT()

這個COUNT()函數啊,是用來做數量的個數統計的,好比說統計一下我們有多少根頭髮,或者統計一下班裏面有多少男同學

等等,這個我們就來統計一下班裏面的男女比例。

大致看一下我的這個表啊,很明顯男女平均分。

但是我們需要統計,不能說把這個表整個展示給用戶,讓用戶自己數。但是,這個COUNT()怎麼用呢?

用法:

SELECT COUNT(*) FROM xxxx表 GROUP BY XXX字段
或者
SELECT COUNT(column) FROM xxxx表 GROUP BY XXX字段
或者
SELECT COUNT(1) FROM xxxx表 GROUP BY XXX字段

別看用法有三種,但是他們的查詢目的都是一樣的。但也有區別,我放在下面說。

但是啊,我們發現這個不行啊,就知道性別,我們也不能知道這個是誰的,男的還是女的。所以,我們多添加一個字段。

是不是,這樣我們就可以知道了性別1有兩個,性別2有兩個。但是還有一個問題,我們現在看到的都是英文,我們如果不知道這些東西是什麼意思,我們可以給他們弄一個別名。這樣可以給我們好理解。下面我們再來說一下別名。

別名

別名啊,這個我們以後會經常使用到它,應爲啥呢,以後我們都是使用Java去連接這個數據庫,然後進行操作。

好比我們現在要拿到這個上面的這個數據量和性別,我們總不能在Java端寫上獲取count(sex) 、sex吧,爲了方便我們理解,二爲了這個我們寫的方便,我們會給這個字段啊啥的,起一個別名,我們直接拿去別名即可。(具體Java連接數據庫,並且操作數據庫,我們放在MySQL後面去講述。)

怎麼去使用這個別名呢?用法如下:

SELECT COUNT(*) AS count, sex 性別 FROM t_student

大家可以看到,COUNT(*) 我們給他AS了一個count的別名,但是sex我們卻沒有寫AS,那這個會不會有錯誤呢?測試一下就知道了。

沒問題啊,這裏我跟大家說一下,這個寫AS和不寫AS效果都是一樣的,一般我們開發會經常忽略,所以很少會看到這個AS,但是我跟大家說啊,最好還是寫上,儘量寫得規範一點,不要怕麻煩。還有就是,雖然說起的這個別名能用中文,但是儘量不要用,這個是一個規範啊,大家要去遵守。

當然,除去這個字段以外,我們的表名也可以使用別名,用法和這個字段的一樣啊,都是FROM xxxx表 AS xxx ,這麼去用的,同樣可以省略這個AS。

最後就是我們一般後面的這個WHERE啊,ORDER BY啊,GROUP BY啊,也可以使用前面定義的別名,我這裏給大家看一下。

但是同樣,儘量不要去使用漢字。

 

SUM()、AVG()、MAX()、MIN()

這裏一下說四個可能有點多,但是啊,這四個我是一般一起來記憶的。

首先是SUM,這個是求和的意思,好比你高考考了多少,我們呢就可以通過你的身份證號找到你的所有試卷,然後用這個SUM,將你所有的考試科目的成績加起來,得到了你的總分。

第二是這個AVG,這個是用來計算平均的,還是你的高考成績,我們可以將你所有的成績加起來,通過這個函數,計算出你的平均成績,當然了,這個函數不需要你告訴他分子分母分別是多少,它會自己識別的。

第三和第四個,這個MAX就是求出一大堆數字中的最大值,而這個MIN就是計算出最小值。

說完他們的作用,我們再來說說他們如何去使用。

 

SUM()

SELECT SUM(column) FROM xxxx表

我們呢,就來計算一下我們這個表中的這四個學生的總年齡。也就是他們所有人的年齡總和。

這裏沒毛病啊,12+13+14+15 = 54啊,但是啊,我們卻沒有用這個GROUP BY,這裏我要和大家說一下。不一定所有的聚合都要和這個GROUP BY 一起去使用,當然,他們組合起來使用是來幹別的的。

我們來計算一下不同性別的同學的年齡總和。這裏呢,我們就要使用到這個GROUP BY 了。

可以看到啊,27,也沒有毛病啊。

 

AVG()

SELECT AVG(column) FROM xxxx表

這裏呢,我們來感受一下這個AVG,我們就計算一下班裏面平均年齡。

沒毛病啊,54除以這個4,就是13.5,看人家還給我們弄了小數點後四位。

它同這個GROUP BY 一起使用也可以幹別的。那就是計算不同性別的人的平均年齡。

同樣也是13.5.不相信的可以自己去計算啊。

 

MAX()、MIN()

SELECT MAX(column) from xxx表 
SELECT MIN(column) from xxx表 

這兩個我們就一起說了。我們分別找一下班裏面的最小年齡和最大年齡。

當然啊,這個有可以和這個GROUP BY一起使用,我們可以分別統計每一個性別的最大和最小。

 

當然,除去我們今天說的,還有很多啊,大家可以到時候蒐集蒐集,把他們羅列出來,然後用的時候好找,方便。

今天就說這麼多了。

最後,祝願我們的祖國更加繁榮昌盛。

祝我們的中國共產黨建黨99週年快樂。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章