日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

mysql中如何求平均值

發布時間:2023/12/15 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 mysql中如何求平均值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章主要為大家展示了“mysql中如何求平均值”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“mysql中如何求平均值”這篇文章吧。

在mysql中,可以利用AVG()函數來求平均值,該函數可以通過計算返回的行數和每一行數據的和,求得指定列數據的平均值;語法“SELECT AVG(column_name) FROM table_name”。

本教程操作環境:windows7系統、mysql8版本、Dell G3電腦。

在mysql中,可以利用AVG()函數來求平均值。

MySQL AVG()函數是一個聚合函數,它用于計算一組值或表達式的平均值。

AVG() 函數可以通過計算返回的行數和每一行數據的和,求得指定列數據的平均值。

AVG()函數的語法如下:

SELECTAVG(column_name)FROMtable_name;

AVG()函數中還可添加DISTINCT運算符來計算不同值的平均值。 例如,如果您有一組值1123,具有DISTINCT操作的AVG()函數將返回不同值的和,即:(1 + 2 + 3)/3 = 2.00

MySQL AVG示例

我們將在示例數據庫中使用products表進行演示,下圖是products表的結構 -

mysql>descproducts;
+--------------------+---------------+------+-----+---------+------------------+
|Field|Type|Null|Key|Default|Extra|
+--------------------+---------------+------+-----+---------+------------------+
|productCode|varchar(15)|NO|PRI|||
|productName|varchar(70)|NO|MUL|NULL||
|productLine|varchar(50)|NO|MUL|NULL||
|productScale|varchar(10)|NO||NULL||
|productVendor|varchar(50)|NO||NULL||
|productDescription|text|NO||NULL||
|quantityInStock|smallint(6)|NO||NULL||
|buyPrice|decimal(10,2)|NO||NULL||
|MSRP|decimal(10,2)|NO||NULL||
|stockValue|double|YES||NULL|STOREDGENERATED|
+--------------------+---------------+------+-----+---------+------------------+
10rowsinset

要計算products表中所有產品的平均價格,可以使用AVG函數,如下查詢:

SELECTAVG(buyprice)'AvaragePrice'FROMproducts;

執行上面查詢語句,得到以下結果 -

mysql>SELECTAVG(buyprice)'AvaragePrice'FROMproducts;
+---------------+
|AvaragePrice|
+---------------+
|54.395182|
+---------------+
1rowinset

請注意,FORMAT函數用于格式化AVG函數返回的平均值。

您可以向SELECT語句添加一個WHERE子句來計算子集值的平均值。 例如,要計算產品線為Classic Cars的產品的平均價格,您可以使用以下查詢:

SELECTAVG(buyprice)'AvarageClassicCarsPrice'
FROMproducts
WHEREproductline='ClassicCars';

執行上面查詢語句,得到以下結果 -

mysql>SELECTAVG(buyprice)'AvarageClassicCarsPrice'
FROMproducts
WHEREproductline='ClassicCars';
+----------------------------+
|AvarageClassicCarsPrice|
+----------------------------+
|64.446316|
+----------------------------+
1rowinset

具有DISTINCT的MySQL AVG()函數

有些產品價格相同,可以使用以下查詢來檢查它:

SELECTCOUNT(buyprice)-COUNT(DISTINCTbuyprice)FROMproducts;

執行上面查詢語句,得到以下結果 -

mysql>SELECTCOUNT(buyprice)-COUNT(DISTINCTbuyprice)FROMproducts;
+--------------------------------------------+
|COUNT(buyprice)-COUNT(DISTINCTbuyprice)|
+--------------------------------------------+
|2|
+--------------------------------------------+
1rowinset

可以使用AVG()函數通過添加DISTINCT運算符來計算不同價格的平均值,如下所示:

SELECTAVG(DISTINCTbuyprice)FROMproducts;

執行上面查詢語句,得到以下結果 -

mysql>SELECTAVG(DISTINCTbuyprice)FROMproducts;
+------------------------+
|AVG(DISTINCTbuyprice)|
+------------------------+
|54.372870|
+------------------------+
1rowinset

結果與使用DISTINCT操作符的平均價格略有不同。

具有GROUP BY子句的MySQL AVG

我們經常使用AVG函數與GROUP BY子句一起計算表中每組行的平均值。

例如,要計算每個產品線的產品的平均價格,您將使用帶有GROUP BY子句的AVG函數,如下查詢語句:

SELECTproductline,
AVG(buyprice)'AvaragePrice'
FROMproducts
GROUPBYproductline;

執行上面查詢語句,得到以下結果 -

mysql>SELECTproductline,
AVG(buyprice)'AvaragePrice'
FROMproducts
GROUPBYproductline;
+------------------+---------------+
|productline|AvaragePrice|
+------------------+---------------+
|ClassicCars|64.446316|
|Motorcycles|50.685385|
|Planes|49.629167|
|Ships|47.007778|
|Trains|43.923333|
|TrucksandBuses|56.329091|
|VintageCars|46.066250|
+------------------+---------------+
7rowsinset

具有HAVING子句的MySQL AVG

您可以使用AVG函數中的HAVING子句中為分組的平均值設置條件。 例如,如果要僅選擇產品平均價格大于50的產品線,則可以使用以下查詢:

SELECTproductline,AVG(buyprice)'AvaragePrice'FROMproductsGROUPBYproductlineHAVINGAVG(buyprice)>50;

執行上面查詢語句,得到以下結果 -

mysql>SELECTproductline,AVG(buyprice)'AvaragePrice'FROMproductsGROUPBYproductlineHAVINGAVG(buyprice)>50;
+------------------+---------------+
|productline|AvaragePrice|
+------------------+---------------+
|ClassicCars|64.446316|
|Motorcycles|50.685385|
|TrucksandBuses|56.329091|
+------------------+---------------+
3rowsinset

MySQL AVG()函數與子查詢

您可以在SQL語句中多次使用AVG()函數來計算一組平均值的平均值。 例如,可以計算產品線平均購買價格的平均買價如下:

SELECTAVG(pl_avg)'AverageProduct'
FROM(
SELECTAVG(buyprice)pl_avg
FROMproducts
GROUPBYproductline
)avgs;

執行上面查詢語句,得到以下結果 -

mysql>SELECTAVG(pl_avg)'AverageProduct'
FROM(
SELECTAVG(buyprice)pl_avg
FROMproducts
GROUPBYproductline
)avgs;
+-----------------+
|AverageProduct|
+-----------------+
|51.1553314286|
+-----------------+
1rowinset

怎么運行的 -

  • 子查詢根據產品線計算平均購買價格。

  • 外部查詢計算從子查詢返回的產品線的平均購買價格的平均購買價格。

具有NULL值的MySQL AVG函數

AVG()函數忽略計算中的NULL值,請參閱以下示例:

首先,創建一個名為t的新表,其中有兩列idvalval列可以包含NULL值。

CREATETABLEIFNOTEXISTSt(
idintauto_incrementprimarykey,
valint
);

其次,在t表中插入一些行,包括NULL值。

INSERTINTOt(val)
VALUES(1),(2),(nulL),(3);

第三,使用AVG()函數計算val列中值的平均值:

SELECTAVG(val)FROMt;

執行上面查詢語句,得到以下結果 -

mysql>SELECTAVG(val)FROMt;
+----------+
|AVG(val)|
+----------+
|2.0000|
+----------+
1rowinset

該語句按預期返回2,因為在AVG函數的計算中不包括NULL值。

具有控制流函數的MySQL AVG

要計算列的平均值,并在單個語句中有條件地計算相同列的平均值,可以使用具有控制流函數(如IFCASEIFNULLNULLIF等)的AVG函數。

例如,要計算Classic Cars產品線的平均價格與所有產品的平均價格的比例,請使用以下聲明:

SELECTAVG(IF(productline='ClassicCars',buyprice,NULL))/AVG(buyprice)'ClassicCars/Products'
FROMproducts;

執行上面查詢語句,得到以下結果 -

mysql>SELECTAVG(IF(productline='ClassicCars',buyprice,NULL))/AVG(buyprice)'ClassicCars/Products'
FROMproducts;
+------------------------+
|ClassicCars/Products|
+------------------------+
|1.1847798580|
+------------------------+
1rowinset

如果產品線是Classic Cars,則IF(productline='Classic Cars',buyprice,NULL)表達式返回價格,否則返回NULL

因為AVG函數忽略了計算中的NULL值,所以AVG(IF(productline ='Classic Cars',buyprice,NULL))表達式只計算產品線是Classic Cars的產品的平均價格。

總結

以上是生活随笔為你收集整理的mysql中如何求平均值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。