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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL之算术表达式、聚合函数及GROUP BY 与 HANVING 等函数的应用

發布時間:2025/3/15 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL之算术表达式、聚合函数及GROUP BY 与 HANVING 等函数的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、MySQL的算術表達式

  算術表達式就是加減乘除的運算過程,主要是對一條數據中出現的數字進行統計和運算。

  首先,有一張數據表,如下:

mysql> select * from test_score; +----+-------+--------+-------+--------+--------+ | id | class | name | yuwen | shuxue | yingyu | +----+-------+--------+-------+--------+--------+ | 1 | 1 | 張三 | 95 | 90 | 97 | | 2 | 1 | 李四 | 59 | 88 | 90 | | 3 | 1 | 王五 | 99 | 99 | 99 | | 4 | 1 | 馬六 | 51 | 56 | 59 | | 5 | 2 | 侯七 | 92 | 94 | 93 | | 6 | 2 | 黑八 | 92 | 97 | 89 | | 7 | 2 | 牛二 | 59 | 60 | 61 | | 8 | 2 | 熊大 | 55 | 50 | 54 | | 9 | 3 | 鐵牛 | 53 | 54 | 51 | | 10 | 3 | 銅鼓 | 49 | 47 | 54 | | 11 | 3 | 鋼巴 | 47 | 51 | 50 | +----+-------+--------+-------+--------+--------+ 11 rows in set (0.00 sec)

然后統計總分,如下:

#學生張三的成績總分 mysql> SELECT (yuwen+shuxue+yingyu) AS total FROM test_score where name='張三'; +-------+ | total | +-------+ | 282 | +-------+ 1 row in set (0.00 sec)

二、SUM()函數的使用

  定義:SUM()函數用于計算一組值或表達式的總和。
  以前上學時老師會統計每科的平均分,然后看看誰拉了后腿。先計算語文,就是先把班里語文得分相加得到總分,然后除以學生人數,得到的就是平均分,低于平均分的學生就要倒霉了。

#所有學生語文成績的總分 mysql> SELECT sum(yuwen) AS yuwen_total FROM test_score; +-------------+ | yuwen_total | +-------------+ | 751 | +-------------+ 1 row in set (0.00 sec)#學生人數 mysql> SELECT count(*) AS total FROM test_score; +-------+ | total | +-------+ | 11 | +-------+ 1 row in set (0.00 sec)#求語文成績的平均值 mysql> select sum(yuwen)/count(*) from test_score; +---------------------+ | sum(yuwen)/count(*) | +---------------------+ | 68.2727 | +---------------------+ 1 row in set (0.04 sec)

三、聚合函數

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

#語文最高分 mysql> SELECT MAX(yuwen) FROM test_score; +------------+ | MAX(yuwen) | +------------+ | 99 | +------------+ 1 row in set (0.00 sec)#語文最低分及所在班級 mysql> SELECT class,MIN(yuwen) FROM test_score; +-------+------------+ | class | MIN(yuwen) | +-------+------------+ | 1 | 47 | +-------+------------+ 1 row in set (0.00 sec)#通過聚合函數求語文成績的平均值 mysql> SELECT avg(yuwen) AS total FROM test_score; +---------+ | total | +---------+ | 68.2727 | +---------+ 1 row in set (0.00 sec)#格式化后語文成績的平均值 mysql> SELECT format(avg(yuwen),2) AS total FROM test_score; +-------+ | total | +-------+ | 68.27 | +-------+ 1 row in set (0.00 sec)#出去重復項后的語文成績平均分 mysql> SELECT avg(DISTINCT yuwen) AS total FROM test_score; +---------+ | total | +---------+ | 66.6667 | +---------+ 1 row in set (0.00 sec)

四、GROUP BY 與 HAVING 的應用

#GROUP BY分組 #各班級語文總分 mysql> SELECT class,sum(yuwen) AS yuwen_total FROM test_score GROUP BY class; +-------+-------------+ | class | yuwen_total | +-------+-------------+ | 1 | 304 | | 2 | 298 | | 3 | 149 | +-------+-------------+ 3 rows in set (0.00 sec)#各班級人數 mysql> SELECT class,count(*) AS total FROM test_score GROUP BY class; +-------+-------+ | class | total | +-------+-------+ | 1 | 4 | | 2 | 4 | | 3 | 3 | +-------+-------+ 3 rows in set (0.00 sec)#各班級語文成績的平均值 mysql> SELECT class,avg(yuwen) AS total FROM test_score GROUP BY class; +-------+---------+ | class | total | +-------+---------+ | 1 | 76.0000 | | 2 | 74.5000 | | 3 | 49.6667 | +-------+---------+ 3 rows in set (0.00 sec)#各班級語文最高分 mysql> SELECT class,MAX(yuwen) FROM test_score GROUP BY class; +-------+------------+ | class | MAX(yuwen) | +-------+------------+ | 1 | 99 | | 2 | 92 | | 3 | 53 | +-------+------------+ 3 rows in set (0.00 sec)#語文最低分(并排序) mysql> SELECT class,MIN(yuwen) AS yuwen FROM test_score GROUP BY class ORDER BY yuwen asc; +-------+-------+ | class | yuwen | +-------+-------+ | 3 | 47 | | 1 | 51 | | 2 | 55 | +-------+-------+ 3 rows in set (0.00 sec)#各個班級的語文成績最低分 mysql> SELECT class,MIN(yuwen) FROM test_score WHERE yuwen<60 GROUP BY class; +-------+------------+ | class | MIN(yuwen) | +-------+------------+ | 1 | 51 | | 2 | 55 | | 3 | 47 | +-------+------------+ 3 rows in set (0.00 sec)#各個班級中平均分最低的班級 mysql> SELECT class,avg(yuwen) as yuwen FROM test_score GROUP BY class HAVING yuwen < 60; +-------+---------+ | class | yuwen | +-------+---------+ | 3 | 49.6667 | +-------+---------+ 1 row in set (0.00 sec)

總結

以上是生活随笔為你收集整理的MySQL之算术表达式、聚合函数及GROUP BY 与 HANVING 等函数的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

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