在本教學中,您將學習如何使用包括:AVG()函式
,COUNT()函式
,SUM()函式
,MAX()函式
和MIN()函式
在內的MySQL聚合函式。
一般情況下,我們需要的聚合資料(總和,平均數,最大最小值等)並不總是儲存在表中。 但是,可以通過執行儲存資料的計算來獲取它。
例如,由於orderDetails
表僅儲存每個專案的數量和價格,因此您無法通過從orderdetails
表直接查詢獲得每個訂單的總金額。您必須為每個訂單查詢專案的數量和價格,並計算訂單的總額。
要在查詢中執行此類計算,就要使用聚合函式了。
根據定義,聚合函式對一組值執行計算並返回單個值。
MySQL提供了許多聚合函式,包括AVG
,COUNT
,SUM
,MIN
,MAX
等。除COUNT
函式外,其它聚合函式在執行計算時會忽略NULL
值。
AVG()函式計算一組值的平均值。 它計算過程中是忽略NULL
值的。
AVG(expression)
可以使用AVG()函式通過使用以下查詢來計算products
表中所有產品的平均價格:
SELECT AVG(buyPrice) average_buy_price
FROM products;
執行上面查詢語句,得到以下結果 -
mysql> SELECT AVG(buyPrice) average_buy_price
FROM products;
+-------------------+
| average_buy_price |
+-------------------+
| 54.395182 |
+-------------------+
1 row in set
有關AVG()函式的詳細使用說明,請參考:/25/12331.html 。
COUNT()函式返回表中的行數。例如,您可以使用COUNT()函式獲取products
表中的產品數量,如下查詢:
SELECT COUNT(*) AS Total
FROM products;
執行上面查詢語句,得到以下結果 -
mysql> SELECT COUNT(*) AS Total
FROM products;
+-------+
| Total |
+-------+
| 110 |
+-------+
1 row in set
COUNT()函式有幾個表單,如COUNT(*)
和COUNT(DISTINCT expression)
,有關更多資訊,請檢視COUNT()函式教學。
SUM()函式返回一組值的總和,SUM()函式忽略NULL
值。如果找不到匹配行,則SUM()函式返回NULL
值。
要獲得每個產品的總銷售量,可以將SUM()函式與GROUP BY
子句一起使用,如下所示:
SELECT productCode,sum(priceEach * quantityOrdered) total
FROM orderdetails
GROUP by productCode;
執行上面查詢語句,得到以下結果 -
mysql> SELECT productCode,sum(priceEach * quantityOrdered) total
FROM orderdetails
GROUP by productCode;
+-------------+-----------+
| productCode | total |
+-------------+-----------+
| S10_1678 | 90157.77 |
| S700_3505 | 84992.25 |
****** 此處省略了一大波資料 ********
| S700_3962 | 78919.06 |
| S700_4002 | 71753.93 |
| S72_1253 | 42692.53 |
| S72_3212 | 47550.40 |
+-------------+-----------+
109 rows in set
要更詳細地檢視結果,可以將orderdetails
表連線到products
表中,如下查詢語句所示:
SELECT P.productCode,
P.productName,
SUM(priceEach * quantityOrdered) total
FROM orderdetails O
INNER JOIN products P ON O.productCode = P.productCode
GROUP by productCode
ORDER BY total;
執行上面查詢語句,得到以下結果 -
mysql> SELECT P.productCode,
P.productName,
SUM(priceEach * quantityOrdered) total
FROM orderdetails O
INNER JOIN products P ON O.productCode = P.productCode
GROUP by productCode
ORDER BY total;
+-------------+---------------------------------------------+-----------+
| productCode | productName | total |
+-------------+---------------------------------------------+-----------+
| S24_1937 | 1939 Chevrolet Deluxe Coupe | 28052.94 |
| S24_3969 | 1936 Mercedes Benz 500k Roadster | 29763.39 |
| S24_2972 | 1982 Lamborghini Diablo | 30972.87 |
| S24_2840 | 1958 Chevy Corvette Limited Edition | 31627.96 |
****** 此處省略了一大波資料 ************************************************
| S12_3891 | 1969 Ford Falcon | 152543.02 |
| S12_1099 | 1968 Ford Mustang | 161531.48 |
| S10_4698 | 2003 Harley-Davidson Eagle Drag Bike | 170686.00 |
| S10_1949 | 1952 Alpine Renault 1300 | 190017.96 |
| S12_1108 | 2001 Ferrari Enzo | 190755.86 |
| S18_3232 | 1992 Ferrari 360 Spider red | 276839.98 |
+-------------+---------------------------------------------+-----------+
109 rows in set
有關SUM()函式的詳細資訊,請參考:/25/12334.html
MAX()函式返回一組值中的最大值。
MAX(expression)
例如,可以使用MAX函式獲取products
表中最昂貴的產品,如下查詢語句:
執行上面查詢語句,得到以下結果 -
SELECT MAX(buyPrice) highest_price FROM products;
執行上面查詢語句,得到以下結果 -
mysql> SELECT MAX(buyPrice) highest_price FROM products;
+---------------+
| highest_price |
+---------------+
| 103.42 |
+---------------+
1 row in set
有關如何使用MAX()函式,請參考: /25/12336.html 。
MIN()函式返回一組值中的最小值,其語法如下所示 -
MIN(expression)
例如,以下查詢使用MIN()函式在products
表中查詢最低價格的產品:
SELECT MIN(buyPrice) lowest_price FROM Products;
執行上面查詢語句,得到以下結果 -
mysql> SELECT MIN(buyPrice) lowest_price FROM Products;
+--------------+
| lowest_price |
+--------------+
| 15.91 |
+--------------+
1 row in set
有關MIN()函式的詳細說明,請參考: /25/12335.html 。
在本教學中,我們向您展示了如何使用最常用的MySQL聚合函式。