0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)據(jù)庫(kù)having的用法

科技綠洲 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2023-11-23 11:21 ? 次閱讀

HAVING是SQL中用于在GROUP BY子句之后對(duì)結(jié)果集進(jìn)行篩選的關(guān)鍵字。它可以根據(jù)聚合函數(shù)的結(jié)果來(lái)過(guò)濾結(jié)果集,只保留符合特定條件的行。HAVING可以用于對(duì)GROUP BY子句中聚合函數(shù)的結(jié)果進(jìn)行篩選,并且它可以使用的操作符包括比較操作符(如等于、大于、小于等)、邏輯操作符(如AND、OR、NOT)以及數(shù)學(xué)運(yùn)算符 (如加、減、乘、除)。

在介紹HAVING的用法之前,我們先來(lái)了解一下GROUP BY子句的作用。GROUP BY子句用于將結(jié)果集按照一個(gè)或多個(gè)列進(jìn)行分組,并根據(jù)分組后的結(jié)果執(zhí)行聚合函數(shù)。聚合函數(shù)可以對(duì)每個(gè)分組生成一個(gè)單一的值,如COUNT、SUM、AVG等。

有了GROUP BY子句之后,我們可以使用HAVING對(duì)聚合函數(shù)的結(jié)果進(jìn)行進(jìn)一步篩選。HAVING子句可以包含以下幾種形式的表達(dá)式:

  1. 單個(gè)聚合函數(shù)的結(jié)果,例如:HAVING COUNT(*) > 100,表示只返回滿足條件的行,即滿足條件的分組至少有100行。
  2. 多個(gè)聚合函數(shù)的結(jié)果之間的比較操作,例如:HAVING COUNT(*) > AVG(salary),表示只返回滿足條件的行,即滿足條件的分組的行數(shù)大于平均工資。
  3. 聚合函數(shù)結(jié)果和常量之間的比較操作,例如:HAVING SUM(salary) >= 1000000,表示只返回滿足條件的行,即滿足條件的分組的工資總和大于等于1000000。
  4. 聚合函數(shù)結(jié)果和子查詢(xún)之間的比較操作,例如:HAVING AVG(salary) > (SELECT AVG(salary) FROM employees WHERE department = 'IT'),表示只返回滿足條件的行,即滿足條件的分組的平均工資大于IT部門(mén)的平均工資。

需要注意的是,HAVING子句在執(zhí)行查詢(xún)時(shí)是在WHERE子句之后進(jìn)行的。WHERE子句在查詢(xún)中起到了先過(guò)濾行的作用,然后根據(jù)GROUP BY子句將行進(jìn)行分組,最后在HAVING子句中對(duì)分組后的結(jié)果進(jìn)行過(guò)濾。

下面我們通過(guò)一個(gè)示例來(lái)說(shuō)明HAVING的用法:

假設(shè)我們有一個(gè)employees表,包含以下列:id、name、department、salary?,F(xiàn)在我們想要找出平均工資大于5000的部門(mén),我們可以使用以下SQL語(yǔ)句:

SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 5000;

在上述SQL語(yǔ)句中,我們首先根據(jù)department列對(duì)employees表進(jìn)行分組,然后計(jì)算每個(gè)分組的平均工資,并將其命名為avg_salary。最后,我們使用HAVING子句將平均工資大于5000的部門(mén)篩選出來(lái)。

另外,HAVING子句還可以與其他關(guān)鍵字一起使用,如ORDER BY和LIMIT。例如,我們可以根據(jù)平均工資降序排列,并只返回前5個(gè)部門(mén),可以使用以下SQL語(yǔ)句:

SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 5000
ORDER BY avg_salary DESC
LIMIT 5;

在上述SQL語(yǔ)句中,我們首先根據(jù)department列分組,并計(jì)算每個(gè)分組的平均工資。然后,在使用HAVING子句篩選出平均工資大于5000的部門(mén)之后,使用ORDER BY子句將結(jié)果按照平均工資降序排列,并使用LIMIT子句限制結(jié)果集的大小為5。

綜上所述,HAVING是SQL中用于在GROUP BY子句之后對(duì)結(jié)果集進(jìn)行篩選的關(guān)鍵字。通過(guò)使用HAVING子句,我們可以根據(jù)聚合函數(shù)的結(jié)果來(lái)過(guò)濾結(jié)果集,只保留符合特定條件的行。在使用HAVING時(shí),我們可以使用比較操作符、邏輯操作符以及數(shù)學(xué)運(yùn)算符來(lái)構(gòu)建表達(dá)式。同時(shí),HAVING子句還可以與其他關(guān)鍵字一起使用,如ORDER BY和LIMIT,來(lái)對(duì)結(jié)果集進(jìn)行排序和限制。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3842

    瀏覽量

    64550
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4344

    瀏覽量

    62820
  • 運(yùn)算符
    +關(guān)注

    關(guān)注

    0

    文章

    172

    瀏覽量

    11094
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)據(jù)庫(kù)使用教程下載

    創(chuàng)建數(shù)據(jù)庫(kù)是實(shí)施數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的第一步,創(chuàng)建合理結(jié)構(gòu)的數(shù)據(jù)庫(kù)需要合理的規(guī)劃與設(shè)計(jì)、需要了解數(shù)據(jù)庫(kù)物理存儲(chǔ)結(jié)構(gòu)與邏輯結(jié)構(gòu)。數(shù)據(jù)庫(kù)是表的集合,
    發(fā)表于 05-09 11:08 ?0次下載

    什么是支持數(shù)據(jù)庫(kù),什么是中宏數(shù)據(jù)庫(kù)

    什么是支持數(shù)據(jù)庫(kù) 軟硬件系統(tǒng)是否需要數(shù)據(jù)庫(kù)支持,及所能支持的數(shù)據(jù)庫(kù)類(lèi)型,如SQL,Oracle,exchange。 什
    發(fā)表于 06-17 08:09 ?1015次閱讀

    數(shù)據(jù)庫(kù)教程之如何進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫(kù)教程之如何進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)內(nèi)容包括了:1 數(shù)據(jù)庫(kù)設(shè)計(jì)概述 ,2 數(shù)據(jù)庫(kù)需求分析 ,3 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì) ,4
    發(fā)表于 10-19 10:41 ?21次下載
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b>教程之如何進(jìn)行<b class='flag-5'>數(shù)據(jù)庫(kù)</b>設(shè)計(jì)

    數(shù)據(jù)庫(kù)學(xué)習(xí)教程之數(shù)據(jù)庫(kù)的發(fā)展?fàn)顩r如何數(shù)據(jù)庫(kù)有什么新發(fā)展

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫(kù)學(xué)習(xí)教程之數(shù)據(jù)庫(kù)的發(fā)展?fàn)顩r如何數(shù)據(jù)庫(kù)有什么新發(fā)展主要內(nèi)容包括了:1 數(shù)據(jù)庫(kù)技術(shù)發(fā)展概述2 數(shù)據(jù)庫(kù)發(fā)展的3個(gè)
    發(fā)表于 10-25 16:29 ?5次下載
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b>學(xué)習(xí)教程之<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的發(fā)展?fàn)顩r如何<b class='flag-5'>數(shù)據(jù)庫(kù)</b>有什么新發(fā)展

    數(shù)據(jù)庫(kù)和自建數(shù)據(jù)庫(kù)的區(qū)別及應(yīng)用

    數(shù)據(jù)庫(kù)是指優(yōu)化和部署在云端的數(shù)據(jù)庫(kù),阿里云和騰訊云都提供云數(shù)據(jù)庫(kù),云數(shù)據(jù)庫(kù)和自己搭建的數(shù)據(jù)庫(kù)有什么區(qū)別?有必要使用云
    的頭像 發(fā)表于 11-20 16:26 ?4668次閱讀
    云<b class='flag-5'>數(shù)據(jù)庫(kù)</b>和自建<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的區(qū)別及應(yīng)用

    ACS數(shù)據(jù)庫(kù)與RSC數(shù)據(jù)庫(kù)比較研究

    ACS數(shù)據(jù)庫(kù)與RSC數(shù)據(jù)庫(kù)比較研究(開(kāi)關(guān)電源技術(shù)與設(shè)計(jì)pdf百度云)-ACS數(shù)據(jù)庫(kù)與RSC數(shù)據(jù)庫(kù)比較研究? ? ? ? ? ? ? ? ?
    發(fā)表于 09-15 11:35 ?5次下載
    ACS<b class='flag-5'>數(shù)據(jù)庫(kù)</b>與RSC<b class='flag-5'>數(shù)據(jù)庫(kù)</b>比較研究

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù)

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù) 華為云數(shù)據(jù)庫(kù)作為華為云的一款數(shù)據(jù)庫(kù)產(chǎn)品,它主要是以MySQL數(shù)據(jù)庫(kù)為主,DDS/GaussD
    的頭像 發(fā)表于 10-27 11:06 ?1551次閱讀

    數(shù)據(jù)庫(kù)建立|數(shù)據(jù)庫(kù)創(chuàng)建的方法?

    數(shù)據(jù)庫(kù)是一個(gè)存儲(chǔ)關(guān)鍵數(shù)據(jù)的文件系統(tǒng)。利用數(shù)據(jù)庫(kù)管理系統(tǒng)建立每個(gè)人的數(shù)據(jù)庫(kù)可以更好地提供安全。 數(shù)據(jù)庫(kù)建立|
    的頭像 發(fā)表于 07-14 11:15 ?1295次閱讀

    數(shù)據(jù)庫(kù)和普通數(shù)據(jù)庫(kù)區(qū)別?|PetaExpress云端數(shù)據(jù)庫(kù)

    數(shù)據(jù)庫(kù)和普通數(shù)據(jù)庫(kù)區(qū)別? 一、云數(shù)據(jù)庫(kù)和普通數(shù)據(jù)庫(kù)的特點(diǎn) 1、云數(shù)據(jù)庫(kù)的特點(diǎn) 它通過(guò)冗余存儲(chǔ)和故障轉(zhuǎn)移技術(shù)確保
    的頭像 發(fā)表于 08-01 17:13 ?1166次閱讀

    python讀取數(shù)據(jù)庫(kù)數(shù)據(jù) python查詢(xún)數(shù)據(jù)庫(kù) python數(shù)據(jù)庫(kù)連接

    python讀取數(shù)據(jù)庫(kù)數(shù)據(jù) python查詢(xún)數(shù)據(jù)庫(kù) python數(shù)據(jù)庫(kù)連接 Python是一門(mén)高級(jí)編程語(yǔ)言,廣泛應(yīng)用于各種領(lǐng)域。其中,Python在
    的頭像 發(fā)表于 08-28 17:09 ?1868次閱讀

    數(shù)據(jù)庫(kù)select語(yǔ)句的基本用法

    數(shù)據(jù)庫(kù)中的SELECT語(yǔ)句是用于從數(shù)據(jù)庫(kù)表中檢索數(shù)據(jù)的基本工具。它是數(shù)據(jù)庫(kù)語(yǔ)言(如SQL)中最常用的命令之一,幾乎在每個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)中都有
    的頭像 發(fā)表于 11-17 15:08 ?2070次閱讀

    數(shù)據(jù)庫(kù)orderby 和groupby用法

    數(shù)據(jù)庫(kù)是指將數(shù)據(jù)按照一定規(guī)則組織并存儲(chǔ)起來(lái),以實(shí)現(xiàn)高效的數(shù)據(jù)管理和訪問(wèn)。在使用數(shù)據(jù)庫(kù)時(shí),我們經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行排序和分組。
    的頭像 發(fā)表于 11-23 11:16 ?2815次閱讀

    NoSQL 數(shù)據(jù)庫(kù)如何選型

    什么是NoSQL數(shù)據(jù)庫(kù)?為什么要使用NoSQL數(shù)據(jù)庫(kù)?鍵值數(shù)據(jù)庫(kù)內(nèi)存鍵值數(shù)據(jù)庫(kù)文檔數(shù)據(jù)庫(kù)列式數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 11-26 08:05 ?496次閱讀
    NoSQL <b class='flag-5'>數(shù)據(jù)庫(kù)</b>如何選型

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—通過(guò)拼接數(shù)據(jù)庫(kù)碎片恢復(fù)SQLserver數(shù)據(jù)庫(kù)

    一個(gè)運(yùn)行在存儲(chǔ)上的SQLServer數(shù)據(jù)庫(kù),有1000多個(gè)文件,大小幾十TB。數(shù)據(jù)庫(kù)每10天生成一個(gè)NDF文件,每個(gè)NDF幾百GB大小。數(shù)據(jù)庫(kù)包含兩個(gè)LDF文件。 存儲(chǔ)損壞,數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 10-31 13:21 ?289次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—通過(guò)拼接<b class='flag-5'>數(shù)據(jù)庫(kù)</b>碎片恢復(fù)SQLserver<b class='flag-5'>數(shù)據(jù)庫(kù)</b>

    數(shù)據(jù)庫(kù)是哪種數(shù)據(jù)庫(kù)類(lèi)型?

    數(shù)據(jù)庫(kù)是一種部署在虛擬計(jì)算環(huán)境中的數(shù)據(jù)庫(kù),它融合了云計(jì)算的彈性和可擴(kuò)展性,為用戶(hù)提供高效、靈活的數(shù)據(jù)庫(kù)服務(wù)。云數(shù)據(jù)庫(kù)主要分為兩大類(lèi):關(guān)系型數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 01-07 10:22 ?105次閱讀