1. 程式人生 > >MySQL之彙總資料(AVG,COUNT,MAX,MIN,SUM)

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只能用在列名前面,不能用在表示式前。