SQL 中having 和where的差別剖析。本站提示廣大學習愛好者:(SQL 中having 和where的差別剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL 中having 和where的差別剖析正文
在select語句中可使用groupby子句將行劃分紅較小的組,然後,應用聚組函數前往每個組的匯總信息,別的,可使用having子句限制前往的成果集。groupby子句可以將查詢成果分組,並前往行的匯總信息Oracle依照groupby子句中指定的表達式的值分組查詢成果。
在帶有groupby子句的查詢語句中,在select列表中指定的列要末是groupby子句中指定的列,要末包括聚組函數
selectmax(sal),jobempgroupbyjob;
(留意max(sal),job的job並不是必定要湧現,但成心義)
查詢語句的select和groupby,having子句是聚組函數獨一湧現的處所,在where子句中不克不及應用聚組函數。
selectdeptno,sum(sal)fromempwheresal>1200groupbydeptnohavingsum(sal)>8500orderbydeptno;
當在gropuby子句中應用having子句時,查詢成果中只前往知足having前提的組。在一個sql語句中可以有where子句和having子句。having與where子句相似,均用於設置限制前提
where子句的感化是在對查詢成果停止分組前,將不相符where前提的行去失落,即在分組之前過濾數據,前提中不克不及包括聚組函數,應用where前提顯示特定的行。
having子句的感化是挑選知足前提的組,即在分組以後過濾數據,前提中常常包括聚組函數,應用having前提顯示特定的組,也能夠應用多個分組尺度停止分組。
查詢每一個部分的每種職位的雇員數
selectdeptno,job,count(*)fromempgroupbydeptno,job;
假如你對什麼時候應當應用WHERE,什麼時候應用HAVING仍然很困惑,請遵守上面的解釋:
WHERE語句在GROUPBY語句之前;SQL會在分組之前盤算WHERE語句。
HAVING語句在GROUPBY語句以後;SQL會在分組以後盤算HAVING語句。