MySQL之聚合數據(AVG,COUNT,MAX,MIN,SUM)


1.首先我們需要了解下什么是聚合函數

  聚合函數aggregation function又稱為組函數。 認情況下 聚合函數會對當前所在表當做一個組進行統計。

2.聚合函數的特點

  1.每個組函數接收一個參數(字段名或者表達式) 統計結果中默認忽略字段為NULL的記錄

  2.要想列值為NULL的行也參與組函數的計算,必須使用IFNULL函數對NULL值做轉換。

  3.不允許出現嵌套 比如sum(max(xx))

3.聚合函數 count(),求數據表的行數

1
select  count (*/字段名)  from  數據表

4.聚合函數 max(),求某列的最大數值

1
select  max (字段名) from  數據表

  

5.聚合函數min(),求某列的最小值

1
select  main(字段名)  from  數據表

  

6.聚合函數sum(),對數據表的某列進行求和操作

1
select  sum (字段名)  from  數據表

  

 

 7.聚合函數avg(),對數據表的某列進行求平均值操作

1
select  avg (字段名)  from  數據表

  

8.聚合函數和分組一起使用

1
select  count (*),group_concat(age)  from  students  group  by  age;

  

  總結:

  MySQL的聚合函數和我們日常office表使用的一些對表的操作的方法大致相同,在工作中主要配合分組使用

 

 

=====================================================

 

 

 

 

一、聚合函數(aggregation function)---也就是組函數

  在一個行的集合(一組行)上進行操作,對每個組給一個結果。

常用的組函數:

AVG([distinct] expr)

求平均值

COUNT({*|[distinct] } expr)

統計行的數量

MAX([distinct] expr)

求最大值

MIN([distinct] expr)

求最小值

SUM([distinct] expr)

求累加和

  ①每個組函數接收一個參數

  ②默認情況下,組函數忽略列值為null的行,不參與計算

  ③有時,會使用關鍵字distinct剔除字段值重復的條數

注意:

  1)當使用組函數的select語句中沒有group by子句時,中間結果集中的所有行自動形成一組,然后計算組函數;

  2)組函數不允許嵌套,例如:count(max(…));

  3)組函數的參數可以是列或是函數表達式;

  4)一個SELECT子句中可出現多個聚集函數。

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM