日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

详解在group by分组查询中where 和 having的用法和区别。

發(fā)布時間:2025/3/20 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解在group by分组查询中where 和 having的用法和区别。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我地都知道sql 中 where 和 having 都是用來篩選條件的關(guān)鍵字。

而且having 一般和group by 一齊使用,?? 但是where 也可以用group by 一齊使用的。

下面用個簡單例子講解下:
有一張分?jǐn)?shù)表Grade_1, ? 3個column 分別是 dep, name 和 grade,? 如下圖,好明顯可以用部門dep來分組. 表中總共9條數(shù)據(jù)


下面語句是用來列出所有部門的總分。 并沒有用到where 和 having 字句。

select dep as Dep,sum(grade) as Sum_grade
from Grade_1
group by dep



可以見到3個組的總分都列出來了。 呢個唔難理解。


where 子句:
下面用1個where字句, 意思是列出所有部門分?jǐn)?shù)大于或等于60分的人的總分

select dep as Dep,sum(grade) as Sum_grade
from Grade_1
where grade >= 60
group by dep



可以見到, 部門1 和 部門2的總分 都比上面的總分?jǐn)?shù)減少了
是因為 where字句的作用,? 語句在分組前 把第1組的? Allen(40分)
和 第二組的piero (45分) 排除掉了。
第一組和第二組實際上都是其余兩個人的總分,

所以可總結(jié)出:
1. where字句用在group by之前。
2. where 作用于單個記錄(行)
3. where 作用生效后(篩選后), group by分組才生效, 也就是where字句作用于 group by 之前。


Having 子句:
下面用1個Having字句, 意思是列出最低分?jǐn)?shù)大于40的部門的總分

select dep as Dep,sum(grade)? as Sum_grade
from Grade_1

group by dep
having min(grade) > 40



可以見到 結(jié)果把整個第一組排除出去了, 是因為
第一組有個人Allen的分?jǐn)?shù)不大于40? 也就是說? 第一組的最低分是40, 不符合條件。

所以可總結(jié)出:
1. having 字句用在group by之后。
2. having 字句 作用于單個組(1行或多行)
3. group by 分組后,? 才用having 子句來分組, 所以having字句作用在分組之后。



where 和 having 子句一齊使用:
下面語句就是上面兩個條件一齊使用,

select dep as Dep,sum(grade)? as Sum_grade
from Grade_1
where grade >= 60
group by dep
having min(grade) > 40



可以見到第一組又出來了,? 之前不是說第一組的最低分是40嗎?

答案都好簡單,因為分組前 where字句先起作用, 把分?jǐn)?shù)小于60的數(shù)據(jù)都排除出去了,
分組后
當(dāng)having子句起作用時,? 第一分組已經(jīng)不包含小于60的數(shù)據(jù)(Allen), 所以第一分組這是的最低分是60(Jason),符合條件拉!

總結(jié)

以上是生活随笔為你收集整理的详解在group by分组查询中where 和 having的用法和区别。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。