1. 程式人生 > >SQL語法(三) 分組和篩選

SQL語法(三) 分組和篩選

前言

            本章將學習sql分組及篩選。

範例

1.分組查詢

--關鍵字:group by 分組欄位名,分組欄位名....
         --注意1:使用了分組後,在select語句中只允許出現分組欄位和多行函式。
         --注意2:如果是多欄位分組,則先按照第一欄位分組,然後每個小組繼續按照第二個欄位繼續分組,以此類推。
         --注意3:在where子句中不允許出現多行函式。

2.分組篩選

--關鍵字:having
              --作用:針對分組進行分組後的資料篩選,允許使用多行函式。
              --注意:having關鍵必須和分組結合使用。不允許單獨使用。   
              --where和having的比較:


                 --where子句不允許出現多行函式,having允許出現多行函式
                 --where子句和having都可以使用普通欄位直接進行篩選,但是where的效率高於having
                    --where執行順序: from--->where--->group by-->select-->order by
                    --having執行順序:from--->group by-->select--->having--->order by
               --結論:在分組語句中,使用where進行欄位級別的篩選,使用having進行多行函式的篩選。

3.SQL查詢語句的結構

--select 子句                  要查詢的資料(oracle函式,別名,連線符,去除重複,邏輯運算)
--from語句                     決定要查詢的表(表名)             
--where子句                    篩選資料(篩選條件,關鍵字)
--group by子句                 分組     (分組欄位)
--having子句                   分組篩選   (多行函式篩選條件)
--order by子句                 排序       (排序)
--from-->where--->group by-->select--->having--->order by