欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1.分組函數(shù)

極值

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

找出最高工資:

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ù)和

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

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

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

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

2.分組查詢

GROUP BY 語句根據(jù)一個或多個列對結(jié)果集進行分組。

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

GROUP BY 語法

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

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

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

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

from 
where 
group by
select
order by

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

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

select sum(sal) from emp;

因為select在group by之后執(zhí)行

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

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)

找出每個部門的最高薪資:

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)在我們來看看如何將兩個字段進行聯(lián)合分組:

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

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í)

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

請注意:如果我們想要對分完組之后的數(shù)據(jù)進行再次的過濾,需要使用having子句,having不能單獨進行使用,必須和group by進行聯(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ō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 請優(yōu)先選擇where

找出每個部門平均薪資大于2500的:

我們發(fā)現(xiàn)無法使用where實現(xiàn)此需求,這時只能使用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

找出每個崗位的平均薪資,要求顯示平均薪資大于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ù)庫學(xué)習(xí)之分組函數(shù)詳解的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫 分組函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql查詢?nèi)タ崭竦亩喾N方法匯總

    Mysql查詢?nèi)タ崭竦亩喾N方法匯總

    SQL查詢語句中空格是用來分隔關(guān)鍵字、表名、列名等的,然而空格也會影響查詢效率,因為查詢語句中的空格越多,查詢的速度就越慢,下面這篇文章主要給大家介紹了關(guān)于Mysql查詢?nèi)タ崭竦亩喾N方法,需要的朋友可以參考下
    2023-04-04
  • Mysql在debian系統(tǒng)中不能插入中文的終極解決方案

    Mysql在debian系統(tǒng)中不能插入中文的終極解決方案

    在debian環(huán)境下,徹底解決mysql無法插入和顯示中文的問題,需要的朋友可以參考下
    2013-09-09
  • MYSQL初學(xué)者命令行使用指南

    MYSQL初學(xué)者命令行使用指南

    其實MYSQL的對數(shù)據(jù)庫的操作與其它的SQL類數(shù)據(jù)庫大同小異,您最好找本將SQL的書看看。我在這里只介紹一些基本的,其實我也就只懂這些了,呵呵。最好的MYSQL教程還是“晏子“譯的“MYSQL中文參考手冊“不僅免費每個相關(guān)網(wǎng)站都有下載,而且它是最權(quán)威的。
    2008-06-06
  • 解決Linux下Tomcat向MySQL插入數(shù)據(jù)中文亂碼問題

    解決Linux下Tomcat向MySQL插入數(shù)據(jù)中文亂碼問題

    本文給大家介紹的是如何解決win平臺下開發(fā)的項目移植到Linux平臺后,向MySQL插入數(shù)據(jù)時中文出現(xiàn)亂碼的問題,非常的簡單實用,有需要的小伙伴可以參考下
    2018-04-04
  • MySQL隱式類型轉(zhuǎn)換導(dǎo)致索引失效的解決

    MySQL隱式類型轉(zhuǎn)換導(dǎo)致索引失效的解決

    本文主要介紹了MySQL隱式類型轉(zhuǎn)換導(dǎo)致索引失效的解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • mysql中explain用法詳解

    mysql中explain用法詳解

    EXPLAIN用于SELECT語句中的每個表返回一行信息。表以它們在處理查詢過程中將被MySQL讀入的順序被列出
    2013-02-02
  • MySQL實現(xiàn)統(tǒng)計過去12個月每個月的數(shù)據(jù)信息

    MySQL實現(xiàn)統(tǒng)計過去12個月每個月的數(shù)據(jù)信息

    這篇文章主要介紹了MySQL實現(xiàn)統(tǒng)計過去12個月每個月的數(shù)據(jù)信息,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • mysql 5.7.23 安裝配置方法圖文教程

    mysql 5.7.23 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 5.7.23安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 在Centos 5.5 上編譯安裝mysql 5.5.9

    在Centos 5.5 上編譯安裝mysql 5.5.9

    由于開發(fā)需要,現(xiàn)在需要安裝安裝MySQL 5.5.9,使用了rpm安裝總是出錯,而且還有好多依事關(guān)系麻煩,此外也沒有找到二進制的包,只好找源碼包進行編譯;
    2014-07-07
  • 利用mysql事務(wù)特性實現(xiàn)并發(fā)安全的自增ID示例

    利用mysql事務(wù)特性實現(xiàn)并發(fā)安全的自增ID示例

    項目中經(jīng)常會用到自增id,比如uid,下面為大家介紹下利用mysql事務(wù)特性實現(xiàn)并發(fā)安全的自增ID,感興趣的朋友可以參考下
    2013-11-11

最新評論