報告彙總資料使用組函式

brj880719發表於2017-09-25

一、語法

  1. SELECT column, group_function
  2.   FROM table
  3. [WHERE condition]
  4. [GROUP BY group_by_expression]
  5. [HAVING group_condition]
  6. [ORDER BY column];

二、組函式

分組函式可以對行集進行操作,並且為每組給出一個結果。這些集合可以是整個表,也可以是由表分割成的組。

函式 內容
AVG 語法:AVG([DISTINCT|ALL]n)
說明:n的平均值,忽略空值
例句:
  1. SELECT AVG(SALARY) FROM EMPLOYEES;
COUNT 語法:COUNT({*|[DISTINCT|ALL]expr})
說明:行數,其中expr用來判定非空值(使用*計算所有選定行,包括重複行和帶有空值的行)
例句:
  1. SELECT COUNT(*) FROM EMPLOYEES;
MAX 語法:MAX([DISTINCT|ALL]expr)
說明:expr的最大值,忽略空值
例句:
  1. SELECT MAX(SALARY) FROM EMPLOYEES;
MIN 語法:MIN([DISTINCT|ALL]expr)
說明:expr的最小值,忽略空值
例句:
  1. SELECT MIN(SALARY) FROM EMPLOYEES;
SUM 語法:SUM([DISTINCT|ALL]n)
說明:n的總計值,忽略空值
例句:
  1. SELECT SUM(SALARY) FROM EMPLOYEES;

三、分組

1、GROUP BY

  可以使用GROUPBY子句將表中的資料分成若干組。

  a) 在SELECT列表中所有未包含在組函式中的列都應該包含在GROUP BY子句中。

  b) 包含在GROUP BY 子句中的列不必包含在SELECT列表中。

2、HAVING

  不能使用WHERE子句來過濾組

  可以使用HAVING子句來過濾組

3、例句

  1. --GROUP BY
  2. --各個部門的最高、最低、平均工資
  3. SELECT DEPTNO, MAX(SAL), MIN(SAL), AVG(SAL)
  4.   FROM EMP
  5.  GROUP BY DEPTNO;

  6. --HAVING
  7. --哪些員工有3個以上的直接下屬,列出員工名字和直接下屬個數
  8. SELECT M.ENAME, COUNT(*)
  9.   FROM EMP W, EMP M
  10.  WHERE W.MGR = M.EMPNO
  11.  GROUP BY M.ENAME
  12. HAVING COUNT(*) > 3;

四、巢狀組函式

例句:
  1. SELECT MAX(AVG(salary))
  2.   FROM employees
  3.  GROUP BY department_id;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2145396/,如需轉載,請註明出處,否則將追究法律責任。

相關文章