Sql Having條件語句

1.Having子句是SELECT語句的可選子句。它用於過濾由 group by 子句返回的行分組。 

一般用法:having一般和group by聯合使用,通常用在聚合函數前面,對分組後的數據進行過濾,(MAX、MIN、COUNT、SUM等)

2.舉個例子:

--統計員工人數大於300的部門?
select 
  deptName, 
  count(deptName) 
from 
  user 
having 
  count(deptName) > 300
--統計員工人數大於300並且平均年齡在20到25歲之間的部門
SELECT
    deptName,
    count(deptName) deptNum,
    avg(age) ageAvg
FROM
    user
GROUP BY
    deptName
HAVING
    count(deptName) > 300 AND
    avg(age) BETWEEN 20 AND 25
ORDER BY
    deptName DESC;

ps:

1、group by能單獨使用,那having能排除group by 單獨使用嗎?

一般情況下是不能單獨使用的。
既然是一般,那肯定有特殊情況了,如下

select 1 from user having count(dept) >= 1;

select 後面 不能是表字段,所以意義不是很大,算是特殊用法吧。

2、having和where都能過濾,那和where的有哪些不同?能和where一起使用嗎?

where後面不能與聚合函數一起使用,所以用having來實現。
having是能和where一起使用的。如下

select xx
from
      where  --篩選FROM子句中指定的操作所產生的行(分組之前過濾數據)
      group by --分組WHERE子句
      having --從分組的結果中篩選行(分組之後過濾數據)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章