程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 0007《SQL必知必會》筆記03-匯總與分組數據,《sql必知必會》03-

0007《SQL必知必會》筆記03-匯總與分組數據,《sql必知必會》03-

編輯:Oracle教程

0007《SQL必知必會》筆記03-匯總與分組數據,《sql必知必會》03-


1、有些時候需要數據的匯總值,而不是數據本身,比如對某些數據求和、計數、求最大最小值、求平均值,因此就有了5個聚集函數:AVE()、COUNT()、MAX()、MIN()、SUM():

  (1)求平均值:AVE(),一個AVG()只對一個字段有效,注意AVE()忽略NULL值,而不是將其作為“0”參與計算:

SELECT AVG(字段名1),```,AVG(字段名n) FROM 表名 WHERE 字句;

    

  (2)計數:COUNT(),兩種用法:COUNT(*):對表中行數進行計數,不管是否有NULL;COUNT(字段名):對特定列有數據的行進行計數,忽略NULL值

  (3)求最大、最小值:MAX()、MIN():多用於數值和日期,文本也可以用,升序排列的最大或最小值。都忽略NULL

  (4)求和:SUM():可以對單個列求和,也可以對多個列乘積求和:

  (5)ALL與DISTINCT:可用於以上5個函數,默認是ALL,對非重復值計算是DISTINCT,用在函數的參數中,與字段名用空格隔開

  (6)聚集函數的組合:以上幾個函數可以包含在SELECT語句中,比如求Products中的商品總數、平均價格、最高價格、最低價格

2、將數據在邏輯上進行分組:比如求各個供應商的商品總數、平均價格、最高價格、最低價格

  

  (1)GROUP BY的使用規定:

    1.GROUP BY 語句必須出現在WHERE之後,ORDER BY 之前

    2.分組列中若有NULL,這也將作為一組

    3.除聚集計算語句外,SELECT中的選擇列必須出現在GROUP BY 中

    4.GROUP BY 的列必須是檢索列或者表達式,若是在SELECT中使用的表達式,在GROUP BY 中也要使用相同的表達式,還不能用別名

    5.GROUP BY 可以包含任意數目的列,可以嵌套

3、將分組進行過濾:HAVING,與GROUP BY 配合使用,與WHERE類似,只是WHERE針對行,HAVING針對邏輯分組,比如列出有2個及以上產品,並且其價格大於等於4的供應商:

    WHERE過濾掉的行不參與GROUP BY的分組

4、分組(GROUP BY)與排序(ORDER BY):GROUP BY輸出的數據不一定有順序;ORDER BY 可以使用任意列(包括非選擇列),但GROUP BY只能且必須使用選擇列火表達式列;ORDER BY 可以沒有,但GROUP BY 在有選擇列(或表達式列)與聚集函數一起時,必須使用。

5、SELECT、FROM、WHERE、GROUP BY、HAVIN、GORDER BY順序

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved