深入淺析SQL中的group by 和 having 用法
一、sql中的group by 用法解析:
Group By語句從英文的字面意義上理解就是“根據(jù)(by)一定的規(guī)則進(jìn)行分組(Group)”。
作用:通過一定的規(guī)則將一個(gè)數(shù)據(jù)集劃分成若干個(gè)小的區(qū)域,然后針對(duì)若干個(gè)小區(qū)域進(jìn)行數(shù)據(jù)處理。
注意:group by 是先排序后分組!
舉例說明:如果要用到group by 一般用到的就是“每”這個(gè)字, 例如現(xiàn)在有一個(gè)這樣的需求:查詢每個(gè)部門有多少人。就要用到分組的技術(shù)
select DepartmentID as '部門名稱',COUNT(*) as '個(gè)數(shù)' from BasicDepartment group by DepartmentID
這個(gè)就是使用了group by +字段進(jìn)行了分組,其中我們就可以理解為我們按照部門的名稱ID
DepartmentID將數(shù)據(jù)集進(jìn)行了分組;然后再進(jìn)行各個(gè)組的統(tǒng)計(jì)數(shù)據(jù)分別有多少;
二、group by 和having 解釋
前提:必須了解sql語言中一種特殊的函數(shù)——聚合函數(shù)。
例如:SUM, COUNT, MAX, AVG等。這些函數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。
WHERE關(guān)鍵字在使用集合函數(shù)時(shí)不能使用,所以在集合函數(shù)中加上了HAVING來起到測(cè)試查詢結(jié)果是否符合條件的作用。
having稱為分組過濾條件,也就是分組需要的條件,所以必須與group by聯(lián)用。
需要注意說明:當(dāng)同時(shí)含有where子句、group by 子句 、having子句及聚集函數(shù)時(shí),執(zhí)行順序如下:
1、執(zhí)行where子句查找符合條件的數(shù)據(jù);
2、使用group by 子句對(duì)數(shù)據(jù)進(jìn)行分組;
3、對(duì)group by 子句形成的組運(yùn)行聚集函數(shù)計(jì)算每一組的值;
4、最后用having 子句去掉不符合條件的組。
having 子句中的每一個(gè)元素也必須出現(xiàn)在select列表中。有些數(shù)據(jù)庫例外,如oracle.
having子句和where子句都可以用來設(shè)定限制條件以使查詢結(jié)果滿足一定的條件限制。
having子句限制的是組,而不是行。聚合函數(shù)計(jì)算的結(jié)果可以當(dāng)條件來使用,where子句中不能使用聚集函數(shù),而having子句中可以。
總結(jié)
以上所述是小編給大家介紹的SQL中的group by 和 having 用法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)我們網(wǎng)站的支持!
上一篇:SQL SERVER 中構(gòu)建執(zhí)行動(dòng)態(tài)SQL語句的方法
欄 目:MsSql
下一篇:Python基于Pymssql模塊實(shí)現(xiàn)連接SQL Server數(shù)據(jù)庫的方法詳解
本文標(biāo)題:深入淺析SQL中的group by 和 having 用法
本文地址:http://mengdiqiu.com.cn/a1/MsSql/10454.html
您可能感興趣的文章
- 01-10SQLServer存儲(chǔ)過程實(shí)現(xiàn)單條件分頁
- 01-10SQL Server 2012降級(jí)至2008R2的方法
- 01-10SQLServer中防止并發(fā)插入重復(fù)數(shù)據(jù)的方法詳解
- 01-10SQL Server數(shù)據(jù)庫定時(shí)自動(dòng)備份
- 01-10SQL Server性能調(diào)優(yōu)之緩存
- 01-10實(shí)現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)據(jù)的實(shí)例代碼
- 01-10Sql Server 死鎖的監(jiān)控分析解決思路
- 01-10SqlServer 在事務(wù)中獲得自增ID的實(shí)例代碼
- 01-10SqlServer快速檢索某個(gè)字段在哪些存儲(chǔ)過程中(sql 語句)
- 01-10SQLServer性能優(yōu)化--間接實(shí)現(xiàn)函數(shù)索引或者Hash索引


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10SQLServer存儲(chǔ)過程實(shí)現(xiàn)單條件分頁
- 01-10SQLServer中防止并發(fā)插入重復(fù)數(shù)據(jù)的方
- 01-10SQL Server 2012降級(jí)至2008R2的方法
- 01-10SQL Server性能調(diào)優(yōu)之緩存
- 01-10SQL Server數(shù)據(jù)庫定時(shí)自動(dòng)備份
- 01-10Sql Server 死鎖的監(jiān)控分析解決思路
- 01-10實(shí)現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)
- 01-10SqlServer快速檢索某個(gè)字段在哪些存儲(chǔ)
- 01-10SqlServer 在事務(wù)中獲得自增ID的實(shí)例代
- 01-10SQLServer性能優(yōu)化--間接實(shí)現(xiàn)函數(shù)索引或
隨機(jī)閱讀
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法