MySQL之彙總資料(AVG,COUNT,MAX,MIN,SUM)
table test
Field | Type | Null | Key | Default | Extra |
id | int(11) | NO | PRI | NULL | auto_increment |
name | char(50) | NO | NULL | ||
age | int(11) | NO | NULL | ||
school | char(50) | YES | NULL |
(一)AVG()函式
AVG()通過對錶中行數計數並計算特定列值之和,從而求得該列的平均值。
例如:SELECT AVG(age) AS avg_age FROM test;
此語句返回表test中所有age的平均值。
例如:SELECT AVG(age) AS avg_age FROM test WHERE name="john";
此語句返回表test中name=john的age的平均值。
注:AVG只能確定特定數值列的平均值,而且列名必須作為函式引數給出。為了獲得多個列的平均值,必須使用多個avg函式。而且avg函式會忽略列值為NULL的行。
(二)COUNT()函式
COUNT()函式進行計數。可利用COUNT()函式確定表中行的數目或者符合特定條件的行的數目。
COUNT()有兩種使用方式:
1.使用COUNT(*)對錶中行的數目進行計數,不管表列中包含的是空值(NULL)還是非空值。
2.使用COUNT(column)對特定列中具有值的行進行計數,忽略NULL值。
例如 SELECT COUNT(*) AS num_test FROM test;
此語句對錶test所有行進行計數,返回表的總行數,不管行中各列有什麼值。
例如 SELECT COUNT(school) FROM test;
此語句只對school列中有值的行進行計數,忽略null行。
(三)MAX()函式
MAX()函式返回指定列中的最大值。MAX()要求指定列名。
例如SELECT MAX(age) FROM test;
此語句返回表test中age的最大值。
注:MAX()函式忽略值為NULL的行。
(四)MIN()函式
MIN()函式返回指定列的最小值,MIN()要求指定列名。
例如 SELEC MIN(age) FROM test;
此語句返回最小的age值。
注:MIN()函式忽略列值為NULL的行。
(五)SUM()函式
SUM()函式來返回指定列值的和(總計)。
SELECT SUM(age)FROM test;
此語句返回age列所有值之和。
注:SUM函式忽略列值為NULL的行。SUM也可以用來合計計算值,SUM(price*count)。
(六)聚集不同值
對以上5個聚集函式都可以如下使用:
1.對所有行執行計算,指定ALL引數或者不給引數(ALL引數是預設的)
2.只包含不同的值,指定DISTINCT引數
例如SELECT AVG(DISTINCT age) FROM test;
此語句返回age值不同的所有age值的平均值。
注:DISTINCT只能用在列名前面,不能用在表示式前。