MySQL教程63-MySQL 聚合函式
MAX函式:查詢指定列的最大值
MySQLMAX() 函式是用來返回指定列中的最大值。
為了方便理解,首先建立一個學生成績表 tb_students_score,學生成績表的資料內容如下所示。
mysql> use test_db; Database changed mysql> SELECT * FROM tb_students_score; +--------------+---------------+ | student_name | student_score | +--------------+---------------+ | Dany | 90View Code| | Green | 99 | | Henry | 95 | | Jane | 98 | | Jim | 88 | | John | 94 | | Lily | 100 | | Susan | 96 | | Thomas | 93 | | Tom | 89 | +--------------+---------------+ 10 rows in set (0.13 sec)
【例項 1】在 tb_students_score 表中查詢最高的成績,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT MAX(student_score) -> AS max_score -> FROM tb_students_score; +-----------+ | max_score | +-----------+ | 100 | +-----------+ 1 row in set (0.06View Codesec)
由執行結果可以看到,MAX() 函式查詢出 student_score 欄位的最大值為 100。
MAX() 函式不僅適用於查詢數值型別,也可應用於字元型別。
【例項 2】在 tb_students_score 表中查詢 student_name 的最大值,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT MAX(student_name) -> AS max_name -> FROM tb_students_score; +----------+ | max_name | +----------+ | Tom | +----------+ 1 row in set (0.03 sec)View Code
由執行結果可以看到,MAX() 函式可以對字母進行大小判斷,並返回最大的字元或者字串值。
注意:MAX() 函式還可以返回任意列中的最大值,包括返回字元型別的最大值。在對字元型別的資料進行比較時,按照字元的 ASCII 碼值大小進行比較,從 a~z,a 的 ASCII 碼最小,z 的最大。在比較時,先比較第一個字元,如果相等,繼續比較下一個字元,一直到兩個字元不相等或者字元結束為止。例如,b 與 t 比較時,t 為最大值;bcd 與 bca 比較時,bcd 為最大值。
MIN函式:查詢指定列的最小值
MySQLMIN() 函式是用來返回查詢列中的最小值。
操作類似MAX函式, 只是作用相反, 不贅述
提示:MIN() 函式與 MAX() 函式類似,不僅適用於查詢數值型別,也可應用於字元型別。
COUNT函式:統計查詢結果的行數
MySQLCOUNT() 函式統計資料表中包含的記錄行的總數,或者根據查詢結果返回列中包含的資料行數,使用方法有以下兩種:
- COUNT(*) 計算表中總的行數,無論某列有數值或者為空值。
- COUNT(欄位名)計算指定列下總的行數,計算時將忽略空值的行。
這裡需要用到以下在介紹MAX()函式時建立的表tb_students_score 。
【例項】查詢 tb_students_score 表中總的行數,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT COUNT(student_name) -> AS students_number -> FROM tb_students_score; +-----------------+ | students_number | +-----------------+ | 10 | +-----------------+ 1 row in set (0.03 sec)View Code
由查詢結果可以看到,COUNT(*) 返回 tb_students_score 表中記錄的總行數,無論值是什麼。返回的總數的名稱為 students_number。
提示:在計算總數的時候對待 NULL 值的方式是,指定列的值為空的行被 COUNT() 函式忽略,但若不指定列,而在 COUNT() 函式中使用星號“*”,則所有記錄都不忽略。
SUM函式:求和
MySQLSUM() 是一個求總和的函式,返回指定列值的總和。
SUM() 函式是如何工作的?
- 如果在沒有返回匹配行 SELECT 語句中使用 SUM 函式,則 SUM 函式返回 NULL,而不是 0。
- DISTINCT 運算子允許計算集合中的不同值。
- SUM 函式忽略計算中的 NULL 值。
這裡需要用到以下在介紹MAX()函式時建立的表tb_students_score 。
【例項】在 tb_students_score 表中計算學生成績的總分,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT SUM(student_score) -> AS score_sum -> FROM tb_students_score; +-----------+ | score_sum | +-----------+ | 942 | +-----------+ 1 row in set (0.00 sec)View Code
由查詢結果可以看到,SUM() 函式返回學生的所有成績之和為 942。
提示:SUM() 函式在計算時,忽略列值為 NULL 的行。
AVG函式:求平均值
MySQLAVG() 函式通過計算返回的行數和每一行資料的和,求得指定列資料的平均值。
這裡需要用到以下在介紹MAX()函式時建立的表tb_students_score 。
【例項】在 tb_students_score 表中,查詢所有學生成績的平均值,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT AVG(student_score) -> AS score_avg -> FROM tb_students_score; +-----------+ | score_avg | +-----------+ | 94.2000 | +-----------+ 1 row in set (0.03 sec)View Code
提示:使用 AVG() 函式時,引數為要計算的列名稱,若要得到多個列的平均值,則需要在每一列都使用 AVG() 函式。