表名:products 欄位:product_id、product_name、product_price、vend_id(供應商) 12.1聚集函數: 我們常常需要彙總數據,而不是把數據檢索出來,MySQL提供了專門的函數。 檢索例子: 確定表中行數 獲得表中行組的和 找出表列 MySQL提供了5個 ...
表名:products
欄位:product_id、product_name、product_price、vend_id(供應商)
12.1聚集函數:
我們常常需要彙總數據,而不是把數據檢索出來,MySQL提供了專門的函數。
檢索例子:
- 確定表中行數
- 獲得表中行組的和
- 找出表列
MySQL提供了5個聚集函數。
聚集函數:運行在行組上,計算和返回單個值的函數。
函數 | 說明 |
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行數 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
12.1.1AVG()函數:
查出所有產品價格的平均值
SELECT AVG(product_price) AS avg FROM products
註:AVG()只能用來確定特定數值列的平均值,而且列名必須作為函數參數給出,為了獲得多個列的平均值,必須使用多個AVG()函數。
12.1.2COUNT()函數:
COUNT()有兩種用法:
- COUNT(*)對錶中所有行的數目進行計數。
- COUNT(column)對某一列的行的數目進行計數。
返回所有產品的數目:
SELECT COUNT(*) FROM products
返回供應商所在行的數目:
SELECT COUNT(vend_id) FROM products
註:COUNT(column)如果指定某一列,如果列上有null,則會忽略該行;但是COUNT(*)不會。
MAX():求某一列上的最大值(最大數值或日期,對於文本數據返回最後一行,會自動忽略null值行)。
MIN():求某一列上的最小值(最小值與最小日期,對於文本數據返回第一行,會自動忽略null值行)。
SUM():求某一列上的所有值之和(會自動忽略null值行)。
12.2聚集不同值:
以上5個函數都可以如下使用:
- 對所有的行執行計算,指定ALL參數(預設指定,也就是說不需要指定)
- 對包含不同的值,指定DISTINCT參數
查找所有不同價格的價格平均值
SELECT AVG(DISTINCT product_price) FROM products
註:如果指定列名,則DISTINCT只能用於COUNT()。
12.3組合聚集函數:
示例:
SELECT AVG(product_price) AS avg,COUNT(product_id) AS count, MAX(product_price) AS max,MIN(product_price) AS min, SUM(product_price) AS sum FROM products