oracle數據庫SQL開發之分組函數

一、分組函數(最多兩層)

– 分組函數是對錶中一組記錄進行操作,每組只返回一個結果,即首先要對錶記錄進行分組,然後再進行操作彙總,每組返回一個結果,分組時可能是整個表分爲一組,也可能根據條件分成多組。
 
– 分組函數常用到以下五個函數:

1.– MINMAX函數主要是返回每組的最小值和最大值。
• MIN
• MAX
–查詢入職日期最早和最晚的

SQL> SELECT MIN(hiredate), MAX(hiredate)
                     FROM emp;

2.-SUMAVG函數分別返回每組的總和及平均值。
• SUM
• AVG 自動忽略null所在行 所以 select avg(nvl(comm,0)) from emp;
–查詢職位以SALES開頭的所有員工平均工資、最低工資、最高工資、工資和

SQL> SELECT AVG(sal), MAX(sal),
                     MIN(sal), SUM(sal)
                     FROM emp
                     WHERE job LIKE 'SALES%';

3.COUNT函數的主要功能是返回滿足條件的每組記錄條數。 使用佔位符能提高搜索效率。
在這裏插入圖片描述

二、group by子句

GROUP BY 所指定的列並不是必須出現在select 列表中 如果在select子句查詢中使用了組函數,任何不在組函數中的列或表達式都必須包含在group by子句

–查詢每個部門每個崗位的工資總和。

SQL> SELECT deptno, job, sum(sal)
    FROM emp
    GROUP BY deptno, job;

三、having 子句 (放在group by後面)

		• 不能在 where子句中限制組
		• 可以通過 having 子句限制組

1.使用 having子句限制組
記錄已經分組.(所以放在group by子句之後)
– 使用過組函數.
– 與 having 子句匹配的結果才輸出

-查詢每個部門最高工資大於2900的部門編號,最高工資

SQL> SELECT deptno, max(sal)
          FROM emp
  	      GROUP BY deptno
          HAVING max(sal)>2900;

 

 

 

四、SQL語句執行過程

• SELECT語句執行過程:
– 1.通過from子句中找到需要查詢的表;
– 2.通過where子句進行非分組函數篩選判斷;
– 3.通過group by子句完成分組操作;
– 4.通過having子句完成組函數篩選判斷;
– 5.通過select子句選擇顯示的列或表達式及組函數;
– 6.通過order by子句進行排序操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章