最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫(kù)學(xué)習(xí)之分組函數(shù)詳解

 更新時(shí)間:2022年07月24日 09:51:10   作者:世界盡頭與你  
這篇文章主要為大家詳細(xì)介紹一下MySQL數(shù)據(jù)庫(kù)中分組函數(shù)的使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下

1.分組函數(shù)

極值

示例表內(nèi)容見(jiàn)此篇文章

找出最高工資:

mysql> select max(sal) from emp;
+----------+
| max(sal) |
+----------+
|  5000.00 |
+----------+
1 row in set (0.00 sec)

找出最低工資:

mysql> select min(sal) from emp;
+----------+
| min(sal) |
+----------+
|   800.00 |
+----------+
1 row in set (0.00 sec)

求和

將所有人的工資相加:

mysql> select sum(sal) from emp;
+----------+
| sum(sal) |
+----------+
| 29025.00 |
+----------+
1 row in set (0.00 sec)

平均值

求所有人的平均工資:

mysql> select avg(sal) from emp;
+-------------+
| avg(sal)    |
+-------------+
| 2073.214286 |
+-------------+
1 row in set (0.00 sec)

列數(shù)和

計(jì)算員工數(shù)量總和:

mysql> select count(ename) from emp;
+--------------+
| count(ename) |
+--------------+
|           14 |
+--------------+
1 row in set (0.00 sec)

count(具體字段) 表示該字段下不為null的行數(shù)

count(*) 表示整個(gè)范圍的行數(shù),因?yàn)閿?shù)據(jù)庫(kù)表中并不存在記錄全為null的情況!

2.分組查詢

GROUP BY 語(yǔ)句根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。

在分組的列上我們可以使用 COUNT, SUM, AVG等函數(shù)。

GROUP BY 語(yǔ)法

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

請(qǐng)注意,在進(jìn)行關(guān)鍵字組合的時(shí)候,他們的順序是這樣的:

select ...
from ...
where ...
group by ...
order by ...

這樣的順序是不可以被更改的,且他們?cè)贛ysql內(nèi)部的執(zhí)行順序是:

from 
where 
group by
select
order by

注意:分組函數(shù)在進(jìn)行使用的時(shí)候要先分組才能使用

那么現(xiàn)在出現(xiàn)了一個(gè)問(wèn)題,如下語(yǔ)句看似違反了組合順序,但是它為什么是正確的呢?

select sum(sal) from emp;

因?yàn)閟elect在group by之后執(zhí)行

現(xiàn)在,我們來(lái)看一個(gè)分組查詢的示例,找出每個(gè)工作崗位的工資和:

mysql> select job,sum(sal) from emp
    -> group by job;
+-----------+----------+
| job       | sum(sal) |
+-----------+----------+
| CLERK     |  4150.00 |
| SALESMAN  |  5600.00 |
| MANAGER   |  8275.00 |
| ANALYST   |  6000.00 |
| PRESIDENT |  5000.00 |
+-----------+----------+
5 rows in set (0.01 sec)

找出每個(gè)部門的最高薪資:

mysql> select deptno,max(sal) from emp group by deptno;
+--------+----------+
| deptno | max(sal) |
+--------+----------+
|     20 |  3000.00 |
|     30 |  2850.00 |
|     10 |  5000.00 |
+--------+----------+
3 rows in set (0.00 sec)

以上這些都是小兒科,現(xiàn)在我們來(lái)看看如何將兩個(gè)字段進(jìn)行聯(lián)合分組:

查找每個(gè)部門不同崗位的最高薪資:

mysql> select deptno,job,max(sal)
    -> from emp
    -> group by deptno,job;
+--------+-----------+----------+
| deptno | job       | max(sal) |
+--------+-----------+----------+
|     20 | CLERK     |  1100.00 |
|     30 | SALESMAN  |  1600.00 |
|     20 | MANAGER   |  2975.00 |
|     30 | MANAGER   |  2850.00 |
|     10 | MANAGER   |  2450.00 |
|     20 | ANALYST   |  3000.00 |
|     10 | PRESIDENT |  5000.00 |
|     30 | CLERK     |   950.00 |
|     10 | CLERK     |  1300.00 |
+--------+-----------+----------+
9 rows in set (0.00 sec)

3.小練習(xí)

找出每個(gè)部門的最高薪資,要求顯示最高薪資大于3000的:

請(qǐng)注意:如果我們想要對(duì)分完組之后的數(shù)據(jù)進(jìn)行再次的過(guò)濾,需要使用having子句,having不能單獨(dú)進(jìn)行使用,必須和group by進(jìn)行聯(lián)合使用

mysql> select deptno,max(sal)
    -> from emp
    -> group by deptno
    -> having max(sal) > 3000;
+--------+----------+
| deptno | max(sal) |
+--------+----------+
|     10 |  5000.00 |
+--------+----------+
1 row in set (0.00 sec)

如上的sql語(yǔ)句效率很低,我們嘗試進(jìn)行一個(gè)小的優(yōu)化:

mysql> select deptno,max(sal)
    -> from emp
    -> where sal > 3000
    -> group by deptno;
+--------+----------+
| deptno | max(sal) |
+--------+----------+
|     10 |  5000.00 |
+--------+----------+
1 row in set (0.00 sec)

where 和 having 請(qǐng)優(yōu)先選擇where

找出每個(gè)部門平均薪資大于2500的:

我們發(fā)現(xiàn)無(wú)法使用where實(shí)現(xiàn)此需求,這時(shí)只能使用having子句:

mysql> select deptno,avg(sal)
    -> from emp
    -> group by deptno
    -> having avg(sal) > 2500;
+--------+-------------+
| deptno | avg(sal)    |
+--------+-------------+
|     10 | 2916.666667 |
+--------+-------------+
1 row in set (0.00 sec)

4.大BOSS

找出每個(gè)崗位的平均薪資,要求顯示平均薪資大于1500的,除了MANAGER外,要求按照平均薪資降序排列:

mysql> select job,avg(sal)
    -> from emp
    -> where job != 'MANAGER'
    -> group by job
    -> having avg(sal) > 1500
    -> order by avg(sal) desc;
+-----------+-------------+
| job       | avg(sal)    |
+-----------+-------------+
| PRESIDENT | 5000.000000 |
| ANALYST   | 3000.000000 |
+-----------+-------------+
2 rows in set (0.00 sec)

到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)學(xué)習(xí)之分組函數(shù)詳解的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫(kù) 分組函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解r2dbc在mysql中的使用

    深入理解r2dbc在mysql中的使用

    這篇文章主要介紹了深入理解r2dbc在mysql中的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 淺談mysql數(shù)據(jù)庫(kù)中的換行符與textarea中的換行符

    淺談mysql數(shù)據(jù)庫(kù)中的換行符與textarea中的換行符

    下面小編就為大家?guī)?lái)一篇淺談mysql數(shù)據(jù)庫(kù)中的換行符與textarea中的換行符。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • MySQL性能優(yōu)化 出題業(yè)務(wù)SQL優(yōu)化

    MySQL性能優(yōu)化 出題業(yè)務(wù)SQL優(yōu)化

    根據(jù)用戶的作答結(jié)果出練習(xí)卷,題目的優(yōu)先級(jí)為:未做過(guò)的題目>只做錯(cuò)的題目>做錯(cuò)又做對(duì)的題目>只做對(duì)的題目。
    2010-08-08
  • Mysql 5.7.14 使用常見(jiàn)問(wèn)題匯總(推薦)

    Mysql 5.7.14 使用常見(jiàn)問(wèn)題匯總(推薦)

    本文給大家分享Mysql 5.7.14 使用常見(jiàn)問(wèn)題匯總的相關(guān)知識(shí)及結(jié)合自己的實(shí)踐總結(jié)了相關(guān)原因,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-09-09
  • MySql總彈出mySqlInstallerConsole窗口的解決方法

    MySql總彈出mySqlInstallerConsole窗口的解決方法

    這篇文章主要介紹了MySql總彈出mySqlInstallerConsole窗口的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • SQL去重方法匯總

    SQL去重方法匯總

    這篇文章主要給大家分享了SQL去重方法匯總,在使用SQL提數(shù)的時(shí)候,常會(huì)遇到表內(nèi)有重復(fù)值的時(shí)候,比如我們想得到?uv?(獨(dú)立訪客),就需要做去重。下面我們就來(lái)看看去重都有哪些方法吧
    2022-01-01
  • mysql-connector-java與mysql版本的對(duì)應(yīng)關(guān)系說(shuō)明

    mysql-connector-java與mysql版本的對(duì)應(yīng)關(guān)系說(shuō)明

    這篇文章主要介紹了mysql-connector-java與mysql版本的對(duì)應(yīng)關(guān)系說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • MySQL正則表達(dá)式regexp_replace函數(shù)的用法實(shí)例

    MySQL正則表達(dá)式regexp_replace函數(shù)的用法實(shí)例

    regexp_replace的使用非常靈活,且容易忘記,故做此筆記,下面這篇文章主要給大家介紹了關(guān)于MySQL正則表達(dá)式regexp_replace函數(shù)的用法實(shí)例,需要的朋友可以參考下
    2022-09-09
  • MySQL中閃回功能的方案討論及實(shí)現(xiàn)

    MySQL中閃回功能的方案討論及實(shí)現(xiàn)

    Oracle有一個(gè)閃回(flashback)功能,能夠用戶恢復(fù)誤操作的數(shù)據(jù),這篇文章主要來(lái)和大家討論一下MySQL中支持閃回功能的方案,有需要的可以了解下
    2025-03-03
  • mysql查詢每小時(shí)數(shù)據(jù)和上小時(shí)數(shù)據(jù)的差值實(shí)現(xiàn)思路詳解

    mysql查詢每小時(shí)數(shù)據(jù)和上小時(shí)數(shù)據(jù)的差值實(shí)現(xiàn)思路詳解

    這篇文章主要介紹了mysql查詢每小時(shí)數(shù)據(jù)和上小時(shí)數(shù)據(jù)的差值,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論

讷河市| 长兴县| 奉贤区| 巴南区| 高阳县| 阳东县| 西畴县| 祁连县| 镇宁| 江山市| 阜宁县| 张家川| 孙吴县| 孟州市| 定陶县| 福安市| 长垣县| 馆陶县| 博乐市| 攀枝花市| 巨野县| 古浪县| 屏山县| 蕉岭县| 丰城市| 镇巴县| 海丰县| 同仁县| 朝阳市| 华亭县| 三河市| 武定县| 南投市| 兴业县| 鹤岗市| 沅江市| 丰县| 明水县| 鄱阳县| 柘城县| 兴和县|