Group by的使用方法


  sql中如果要分組查詢,一般都會使用到group by語句,如何熟練使用group by語句呢,我分以下幾點進行總結。

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

Group by與聚合函數

  group by一般與聚合函數一起使用。這是因為group by之后結果集就變成了多個分組,而每個分組可能包含多條記錄,要想針對每個分組進行操作,所以必須使用可以作用在多條記錄上的聚合函數。比如,下面的示例就使用了group by和聚合函數查詢每個PNR的總記錄數,sql語句如下。

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

  如果要對分組進行篩選呢?要怎么實現,請繼續往下看。

Group by與Having

  要對分組后的結果進行篩選,一般使用having語句來實現。請看下面示例,代碼如下。

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的使用,有幾個特別需要關注的地方。

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

參考資料

  1. SQL中Group By的使用
  2. sql group by 與 having的用法
  3. 深入淺出SQL教程之Group by和Having


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM