程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> [SQL入門級] 接上篇,繼續查詢,sql上篇

[SQL入門級] 接上篇,繼續查詢,sql上篇

編輯:Oracle教程

[SQL入門級] 接上篇,繼續查詢,sql上篇


距離上一篇時間隔得蠻久了,這篇繼續查詢,簡單總結一下聚合函數、分組的知識。

一、聚合函數(組函數/多行函數)

 

何謂多行函數,顧名思義就是函數作用於多行數據得出一個輸出結果,什麼意思呢?看圖:

 

那麼常用的有哪些這樣的函數呢?

 

AVG(平均值)

SUM(合計)

COUNT(計數)

MAX(最大值)

MIN(最小值)

STDDEV(標准差)

組函數使用的語法,用法很簡單,但有兩點要注意:

I. 函數參數類型

II. 有關空值的處理

III. 不能在WHERE子句中使用組函數,這點結合後面的HAVING子句解釋。

IV. 組函數可以嵌套使用

二、數據分組

 

GROUP BY子句,分組數據

意思咱就不廢話了,用的時候注意兩點:

  • SELECT後面的所有列中,沒有使用聚合函數的列,必須出現在GROUP BY後面,反過來包含在GROUP BY子句的中的列卻不必包含在SELECT列表中。
  • GROUP BY子句可以包含多個列,同意也適用規則1。

有點暈,什麼意思呢?我來解釋一下,判斷一個sql語句是否合法其實可以試著去理解你要寫的sql語句要表達的實際想法,例如:

  • select department_id,job_id,avg(salary)
    from employees
    group by department_id,job_id

如上語句,我想要表達的意思是:從雇員這張表中求出不同部門和不同工種的人的平均工資,輸出的格式是按照SELECT語句列表。那麼如果我從SELECT列表中隨便刪掉一個字段,改變的只是我輸出的格式,我還是按部門和工種進行分類了;但是如果只從GROUP

BY子句中刪掉job_id,則語句表達的意思就不能成立了,我按部門進行分組,但是部門中有很多個工種,結果到底要怎樣對應不得而知。

 

 

HAVING子句,過濾分組

  • WHERE子句的作用是篩選滿足條件的數據行,即在分組之前過濾數據,條件中不能使用聚合函數;使用WHERE條件顯示特定的行;
  • HAVING子句的作用是篩選滿足條件的組,即在分組之後過濾分組,條件中經常包含聚合函數;使用HAVING條件顯示特定的分組;

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