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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

mysql中如何求平均值

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

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

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

本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

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

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

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

AVG()函數(shù)的語法如下:

SELECTAVG(column_name)FROMtable_name;

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

MySQL AVG示例

我們將在示例數(shù)據(jù)庫中使用products表進(jìn)行演示,下圖是products表的結(jié)構(gòu) -

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

要計(jì)算products表中所有產(chǎn)品的平均價格,可以使用AVG函數(shù),如下查詢:

SELECTAVG(buyprice)'AvaragePrice'FROMproducts;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

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

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

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

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

具有DISTINCT的MySQL AVG()函數(shù)

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

SELECTCOUNT(buyprice)-COUNT(DISTINCTbuyprice)FROMproducts;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

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

SELECTAVG(DISTINCTbuyprice)FROMproducts;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

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

具有GROUP BY子句的MySQL AVG

我們經(jīng)常使用AVG函數(shù)與GROUP BY子句一起計(jì)算表中每組行的平均值。

例如,要計(jì)算每個產(chǎn)品線的產(chǎn)品的平均價格,您將使用帶有GROUP BY子句的AVG函數(shù),如下查詢語句:

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

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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函數(shù)中的HAVING子句中為分組的平均值設(shè)置條件。 例如,如果要僅選擇產(chǎn)品平均價格大于50的產(chǎn)品線,則可以使用以下查詢:

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

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

MySQL AVG()函數(shù)與子查詢

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

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

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

怎么運(yùn)行的 -

  • 子查詢根據(jù)產(chǎn)品線計(jì)算平均購買價格。

  • 外部查詢計(jì)算從子查詢返回的產(chǎn)品線的平均購買價格的平均購買價格。

具有NULL值的MySQL AVG函數(shù)

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

首先,創(chuàng)建一個名為t的新表,其中有兩列idval,val列可以包含NULL值。

CREATETABLEIFNOTEXISTSt(
idintauto_incrementprimarykey,
valint
);

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

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

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

SELECTAVG(val)FROMt;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

該語句按預(yù)期返回2,因?yàn)樵贏VG函數(shù)的計(jì)算中不包括NULL值。

具有控制流函數(shù)的MySQL AVG

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

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

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

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

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

因?yàn)锳VG函數(shù)忽略了計(jì)算中的NULL值,所以AVG(IF(productline ='Classic Cars',buyprice,NULL))表達(dá)式只計(jì)算產(chǎn)品線是Classic Cars的產(chǎn)品的平均價格。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。