Group by的使用方法

  sql中若是要分組查詢,通常都會使用到group by語句,如何熟練使用group by語句呢,我分如下幾點進行總結。html

  1. Group by與聚合函數
  2. Group by與Having
  3. 須要注意的地方

Group by與聚合函數

  group by通常與聚合函數一塊兒使用。這是由於group by以後結果集就變成了多個分組,而每一個分組可能包含多條記錄,要想針對每一個分組進行操做,因此必須使用能夠做用在多條記錄上的聚合函數。好比,下面的示例就使用了group by和聚合函數查詢每一個PNR的總記錄數,sql語句以下。sql

1 -- 1,Group by與聚合函數
2 -- 查詢每一個PNR的總記錄數
3 SELECT NewPNR,COUNT(*) FROM dbo.RemoteSession
4 GROUP BY NewPNR;

  若是要對分組進行篩選呢?要怎麼實現,請繼續往下看。函數

Group by與Having

  要對分組後的結果進行篩選,通常使用having語句來實現。請看下面示例,代碼以下。spa

1 -- 2,Group by與Having
2 -- 查詢總記錄數>1(或者說有重複的)的PNR
3 SELECT NewPNR,COUNT(*) FROM dbo.RemoteSession
4 GROUP BY NewPNR
5 HAVING COUNT(*)>1;

須要注意的地方

  關於group by的使用,有幾個特別須要關注的地方。code

  1. select語句指定的字段要麼包含在group by語句中做爲分組的依據;要麼就要被包含在聚合函數中(好比:count,sum等)。
  2. 注意where與having的區別,where是在分組前對結果集進行過濾,而having是對group by分組後的結果集進行過濾。

參考資料htm

  1. SQL中Group By的使用
  2. sql group by 與 having的用法
  3. 深刻淺出SQL教程之Group by和Having
相關文章
相關標籤/搜索