首頁 >資料庫 >mysql教程 >MySQL資料查詢之:使用集合/聚合函數查詢

MySQL資料查詢之:使用集合/聚合函數查詢

coldplay.xixi
coldplay.xixi轉載
2021-03-12 09:23:422935瀏覽

MySQL資料查詢之:使用集合/聚合函數查詢

MySQL聚合函數如下:

##回傳某列的最小值sum() 傳回某列值的和##(1)count ()函數
#函數 作用
#avg() 傳回某一列的平均值
#count() 傳回某一列的行數
max() 傳回某列的最大值
#min()
(2)sum()函數

(3)avg()函數
(4)max()函數
(5)min()函數


#(免費學習推薦:

mysql影片教學#)(1)count()函數

count()函數統計表中包含的記錄行的總數,或根據查詢結果傳回列中包含的資料行數,有兩種使用方法:
    ①count(*)計算表中總的行數,不管某列有數值或為空值。
  • ②count(欄位名稱)計算指定列下總的行數,計算時會忽略空值的行。

  • 【例1】查詢customers表中總的行數,SQL語句如下:
mysql> select count(*) as cust_num    -> from customers;+----------+| cust_num |+----------+|        4 |+----------+1 row in set (0.06 sec)

由查詢結果可知,count(*)傳回customers表中記錄的總行數,不管其值為何。傳回的總數的名稱為cust_num。

【範例2】查詢customers表中有電子郵箱的顧客的總數,SQL語句如下:

mysql> select count(c_email) as email_num    -> from customers;+-----------+| email_num |+-----------+|         3 |+-----------+1 row in set (0.00 sec)

上面兩個範例結果不同說明兩種方式在計算總數的時候對待null值的方式不同,即指定列的值為空的行被count()函數忽略,但是如果不指定列,而在count()函數中使用*,則所有記錄都不忽略。

【例3】在orderitems表中,使用count()函數與group by關鍵字一起使用,用來計算不同分組中的記錄總數。

mysql> select o_num,count(f_id)
    -> from orderitems    -> group by o_num;+-------+-------------+| o_num | count(f_id) |+-------+-------------+| 30001 |           4 || 30002 |           1 || 30003 |           1 || 30004 |           1 || 30005 |           4 |+-------+-------------+5 rows in set (0.00 sec)

(2)sum()函數

sum是求總和的函數,傳回指定列值的總和。
  • 【範例】在orderitems表中查詢30005號訂單總共購買的水果總量,SQL語句如下:
mysql> select sum(quantity) as items_total    -> from orderitems    -> where o_num = 30005;+-------------+| items_total |+-------------+|          30 |+-------------+1 row in set (0.05 sec)

sum()可以和group by一起使用,用來計算每個分組的總和。

【範例】在orderitems表中,使用sum()函數統計不同訂單號碼中訂購的水果總量,SQL語句如下:

mysql> select o_num,sum(quantity) as items_total    -> from orderitems    -> group by o_num;+-------+-------------+| o_num | items_total |+-------+-------------+| 30001 |          33 || 30002 |           2 || 30003 |         100 || 30004 |          50 || 30005 |          30 |+-------+-------------+5 rows in set (0.00 sec)

sum函數在計算時,忽略值為null的行。

(3)avg()函數

avg()函數透過計算傳回的行數和每一列資料的和,求得指定列資料的平均值。
  • avg()函數使用時,其參數為要計算的列名稱,如果要得到多個列的多個平均值,則需要在每一列上使用avg()函數。
  • 【範例1】在fruits表中,查詢s_id=103的供應商的水果價格的平均值,SQL語句如下:
mysql> select avg(f_price) as avg_price    -> from fruits    -> where s_id = 103;+-----------+| avg_price |+-----------+|  5.700000 |+-----------+1 row in set (0.05 sec)

【例2】在fruits表中,查詢每一個供應商的水果價格的平均值,SQL語句如下:

mysql> select s_id,avg(f_price) as avg_price    -> from fruits    -> group by s_id;+------+-----------+| s_id | avg_price |+------+-----------+|  104 |  7.000000 ||  101 |  6.200000 ||  103 |  5.700000 ||  107 |  3.600000 ||  102 |  8.933333 ||  105 |  7.466667 ||  106 | 15.700000 |+------+-----------+7 rows in set (0.00 sec)

group by 關鍵字根據s_id欄位對記錄進行分組,然後計算出每個分組的平均值,這種分組求平均值的方法非常有用。例如,求不同班級學生成績的平均值,求不同部門工人的平均薪資,求各地的年平均氣溫等。

(4)max()函數

max()傳回指定列中的最大值。
  • max()函數除了用來找出最大的列值或日期值之外,還能傳回任意列中的最大值,包括傳回字元類型的最大值。
  • 【範例1】在fruits表中找出市場上價格最高的水果值,SQL語句如下:
mysql> select max(f_price) as max_price from fruits;+-----------+| max_price |+-----------+|     15.70 |+-----------+1 row in set (0.05 sec)

【範例2】在fruits表中尋找不同供應商提供的價格最高的水果值,SQL語句如下:

mysql> select s_id,max(f_price) as max_price    -> from fruits    -> group by s_id;+------+-----------+| s_id | max_price |+------+-----------+|  104 |      7.60 ||  101 |     10.20 ||  103 |      9.20 ||  107 |      3.60 ||  102 |     11.20 ||  105 |     11.60 ||  106 |     15.70 |+------+-----------+7 rows in set (0.00 sec)

【例3】在fruits表中找出f_name的最大值,SQL語句如下:

mysql> select max(f_name) from fruits;+-------------+| max(f_name) |+-------------+| xxxx        |+-------------+1 row in set (0.00 sec)

(5)min()函數

- min()傳回查詢列中的最小值。

【範例1】在fruits表中找出市場上價格最低的水果值,SQL語句如下:

mysql> select min(f_price) as min_price    -> from fruits;+-----------+| min_price |+-----------+|      2.20 |+-----------+1 row in set (0.00 sec)

【例2】在fruits表中找出不同供應商提供的價格最低的水果汁,SQL語句如下:

mysql> select s_id,min(f_price) as min_price    -> from fruits    -> group by s_id;+------+-------------+| s_id | min_price |+------+-------------+|  104 |        6.40 ||  101 |        3.20 ||  103 |        2.20 ||  107 |        3.60 ||  102 |        5.30 ||  105 |        2.60 ||  106 |       15.70 |+------+-------------+7 rows in set (0.00 sec)

相關免費學習推薦:

mysql資料庫(影片)

以上是MySQL資料查詢之:使用集合/聚合函數查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除