1、在使用SQL查詢資料時,有時希望對查詢的結果集進行統計分析。例如,統計所有課程的單價總和、求出結果集所有記錄的最大值或最小值、結果集中的記錄數量等統計資料。這就需要用到SQL統計函式。SQL統計函式是在查詢結果集的基礎上對列資料進行各種統計運算,運算的結果形成一條彙總記錄。下表給出了MySQL提供的統計函式及其功能。
2、上表中的ALL為統計函式的預設選項,指計算所有的值;使用DISTINCT關鍵字則去掉重複值;列表表示式是指含有列名的表示式。下面給出幾個常用統計函式的例子。
例1:查詢mooc資料庫的course表,查詢所有課程記錄,並求出課程記錄價格欄位的總和。
求課程記錄價格欄位的總和可以使用SUM函式,SUM函式只能用於數值型欄位,並且忽略列值為NULL的記錄。在查詢視窗輸入下面的SQL語句。
SELECT name, SUM(price) as 總價 FROM course
在上面的SQL語句中,使用SUM函式計算price欄位值的總和,並使用AS關鍵字將price欄位別名為“總價”。SQL查詢結果如下圖所示。
3、例2:查詢mooc資料庫的course表,查詢所有課程記錄,並求出課程記錄價格欄位的最大值和最小值。
求課程記錄價格欄位的最大值和最小值,可以使用MAX和MIN函式,MAX函式求出給定列值的最大值,MIN函式求出給定列值的最小值,MAX和MIN函式可用於數值型欄位、字串型欄位、日期型別欄位。在查詢視窗輸入下面的SQL語句。
SELECT MAX(price) AS 最大值,MIN(price) AS 最小值 FROM course
在上面的SQL語句中,使用MAX函式求出所有課程記錄price欄位的最大值,並使用AS關鍵字將price欄位別名為“最大值”;使用MIN函式求出所有課程記錄price欄位的最小值,並使用AS關鍵字將price欄位別名為“最小值”。SQL查詢結果如下圖所示。
4、例3:查詢mooc資料庫的course表,查詢類別為“機器學習”的課程記錄,並求出課程數量。
求課程的數量可以使用COUNT函式,COUNT函式用於統計查詢結果集中記錄的個數,在COUNT函式中,“*”用於統計所有記錄的個數,ALL關鍵字用於統計指定列的列值非空記錄個數,DISTINCT關鍵字用於統計指定列的列值非空且不重複的記錄個數,預設值為ALL。在查詢視窗輸入下面的SQL語句。
SELECT COUNT(*) AS 課程總數 FROM course WHERE category="機器學習"
在上面的SQL語句中,使用COUNT函式求出查詢結果集的記錄數,在COUNT函式中使用“*”指明要統計所有記錄個數。SQL查詢結果如下圖所示。
5、例4:查詢mooc資料庫的course表,查詢所有課程記錄,並求出課程單價的平均值。
求課程單價的平均值,可以使用AVG函式,AVG函式用於計算給定列值的平均值,AVG函式只能用於數值型欄位。在查詢視窗輸入下面的SQL語句。
SELECT AVG(price) AS 平均價格 FROM course
在上面的SQL語句中,使用AVG函式求出課程記錄price欄位的平均值,並使用AS關鍵字將price欄位別名為“平均價格”。SQL查詢結果如下圖所示。
1、在使用SQL查詢資料時,有時希望對查詢的結果集進行統計分析。例如,統計所有課程的單價總和、求出結果集所有記錄的最大值或最小值、結果集中的記錄數量等統計資料。這就需要用到SQL統計函式。SQL統計函式是在查詢結果集的基礎上對列資料進行各種統計運算,運算的結果形成一條彙總記錄。下表給出了MySQL提供的統計函式及其功能。
2、上表中的ALL為統計函式的預設選項,指計算所有的值;使用DISTINCT關鍵字則去掉重複值;列表表示式是指含有列名的表示式。下面給出幾個常用統計函式的例子。
例1:查詢mooc資料庫的course表,查詢所有課程記錄,並求出課程記錄價格欄位的總和。
求課程記錄價格欄位的總和可以使用SUM函式,SUM函式只能用於數值型欄位,並且忽略列值為NULL的記錄。在查詢視窗輸入下面的SQL語句。
SELECT name, SUM(price) as 總價 FROM course
在上面的SQL語句中,使用SUM函式計算price欄位值的總和,並使用AS關鍵字將price欄位別名為“總價”。SQL查詢結果如下圖所示。
3、例2:查詢mooc資料庫的course表,查詢所有課程記錄,並求出課程記錄價格欄位的最大值和最小值。
求課程記錄價格欄位的最大值和最小值,可以使用MAX和MIN函式,MAX函式求出給定列值的最大值,MIN函式求出給定列值的最小值,MAX和MIN函式可用於數值型欄位、字串型欄位、日期型別欄位。在查詢視窗輸入下面的SQL語句。
SELECT MAX(price) AS 最大值,MIN(price) AS 最小值 FROM course
在上面的SQL語句中,使用MAX函式求出所有課程記錄price欄位的最大值,並使用AS關鍵字將price欄位別名為“最大值”;使用MIN函式求出所有課程記錄price欄位的最小值,並使用AS關鍵字將price欄位別名為“最小值”。SQL查詢結果如下圖所示。
4、例3:查詢mooc資料庫的course表,查詢類別為“機器學習”的課程記錄,並求出課程數量。
求課程的數量可以使用COUNT函式,COUNT函式用於統計查詢結果集中記錄的個數,在COUNT函式中,“*”用於統計所有記錄的個數,ALL關鍵字用於統計指定列的列值非空記錄個數,DISTINCT關鍵字用於統計指定列的列值非空且不重複的記錄個數,預設值為ALL。在查詢視窗輸入下面的SQL語句。
SELECT COUNT(*) AS 課程總數 FROM course WHERE category="機器學習"
在上面的SQL語句中,使用COUNT函式求出查詢結果集的記錄數,在COUNT函式中使用“*”指明要統計所有記錄個數。SQL查詢結果如下圖所示。
5、例4:查詢mooc資料庫的course表,查詢所有課程記錄,並求出課程單價的平均值。
求課程單價的平均值,可以使用AVG函式,AVG函式用於計算給定列值的平均值,AVG函式只能用於數值型欄位。在查詢視窗輸入下面的SQL語句。
SELECT AVG(price) AS 平均價格 FROM course
在上面的SQL語句中,使用AVG函式求出課程記錄price欄位的平均值,並使用AS關鍵字將price欄位別名為“平均價格”。SQL查詢結果如下圖所示。