1. 程式人生 > >聚集函式和資料分組

聚集函式和資料分組

一、聚集函式

1、AVG([DISTINCT] expr)

  返回某列的平均值。

  忽略列值為NULL的行。

2、COUNT(DISTINCT expr,[expr...])

  返回行數。

  使用COUNT(*)對錶中行的數目進行計數,不管表中包含的是空值(NULL)還是非空值。

  使用COUNT(column)對特定列中具有值的行進行計數,忽略列值為NULL的行。

3、MAX([DISTINCT] expr)

  返回某列的最大值。

  忽略列值為NULL的行。

4、MIN([DISTINCT] expr)

  返回某列的最小值。

  忽略列值為NULL的行。

5、SUM([DISTINCT] expr)

  返回某列之和。

  忽略列值為NULL的行。

 

二、分組資料

  GROUP BY子句指示MySQL分組資料,然後對每個組而不是整個結果集進行聚集。

1、GROUP BY子句可以包含任意數目的列。這使得能對分組進行巢狀,為資料分組提供更細緻的控制。

2、如果GROUP BY子句嵌套了分組,資料將在最後規定的分組上進行彙總。即在建立分組時,指定的所有列都一起計算(所以不能從個別的列取回資料)。

3、GROUP BY子句列出的每個列都必須是檢索列或有效的表示式(但不能是聚集函式)。如果在SELECT中使用表示式,則必須在GROUP BY子句中指定相同的表示式。不能使用別名。

4、除聚集計算語句外,SELECT語句中的每個列都必須在GROUP BY子句中給出。

5、如果分組列中有NULL值,則NULL將作為一個分組返回。如果列中有多行NULL值,它們將分為一組。

6、使用WITH ROLLUP關鍵字,可以得到每個分組以及每個分組彙總級別(針對每個分組)的值。

7、使用HAVING關鍵字過濾分組。