SQL入門:分組_電腦知識網
熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL入門:分組

2013-11-12 23:41:25  來源: SQL Server 

  I分組
  DB 通用數據庫具有基於表的特定列對數據進行分析的能力
  
  可按照在 GROUP BY 子句中定義的組對行進行分組以其最簡單的形式組由稱為分組列的列組成 SELECT 子句中的列名必須為分組列或列函數列函數對於 GROUP BY 子句定義的每個組各返回一個結果下列示例產生一個列出每個部門編號的最高薪水的結果
  
   SELECT DEPT MAX(SALARY) AS MAXIMUM
    FROM STAFF
    GROUP BY DEPT
  
  此語句產生下列結果
   
  注意計算的是每個部門(由 GROUP BY 子句定義的組)而不是整個公司的 MAX(SALARY)
  
  
  II將 WHERE 子句與 GROUP BY 子句一起使用
  
  分組查詢可以在形成組和計算列函數之前具有消除非限定行的標准 WHERE 子句必須在GROUP BY 子句之前指定 WHERE 子句例如
  
   SELECT WORKDEPT EDLEVEL MAX(SALARY) AS MAXIMUM
    FROM EMPLOYEE
    WHERE HIREDATE >
    GROUP BY WORKDEPT EDLEVEL
    ORDER BY WORKDEPT EDLEVEL
  
  
  結果為
   educitycn/img_///jpg >
  
  注意在 SELECT 語句中指定的每個列名也在 GROUP BY 子句中提到未在這兩個地方提到的列名將產生錯誤GROUP BY 子句對 WORKDEPT 和 EDLEVEL 的每個唯一組合各返回一行
  
  
  III在 GROUP BY 子句之後使用 HAVING 子句
  
  可應用限定條件進行分組以便系統僅對滿足條件的組返回結果為此在GROUP BY 子句後面包含一個 HAVING 子句 HAVING 子句可包含一個或多個用 AND 和 OR 連接的謂詞每個謂詞將組特性(如 AVG(SALARY))與下列之一進行比較
  
  
  該組的另一個特性
  
  例如
  
  HAVING AVG(SALARY) > * MIN(SALARY)
  
  
  常數
  
  例如
  
   HAVING AVG(SALARY) >
  
  例如下列查詢尋找雇員數超過 的部門的最高和最低薪水
  
   SELECT WORKDEPT MAX(SALARY) AS MAXIMUM MIN(SALARY) AS MINIMUM
    FROM EMPLOYEE
    GROUP BY WORKDEPT
    HAVING COUNT(*) >
    ORDER BY WORKDEPT
  
  此語句產生下列結果
  
  educitycn/img_///jpg >
  
  有可能(雖然很少見)查詢有 HAVING 子句但沒有 GROUP BY 子句在此情況下DB 將整個表看作一個組因為該表被看作是單個組所以最多可以有一個結果行如果 HAVING 條件對整個表為真則返回選擇的結果(該結果必須整個由列函數組成)否則不返回任何行
From:http://tw.wingwit.com/Article/program/SQLServer/201311/11239.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.