Oracle SQL学习笔记 之 GROUP函数与GROUP BY子句_Dragon Zone_百度

Posted on

Oracle SQL学习笔记 之 GROUP函数与GROUP BY子句Dragon Zone百度空间

Dragon Zone

价值不是你拥有多少,而是你留下多少。

2007-11-23 14:08

Oracle SQL学习笔记 之 GROUP函数与GROUP BY子句

  1. Group函数 AVG COUNT MAX MIN STDDEV SUM VARIANCE 使用格式: SELECT column, group_function(column) FROM table [WHERE condition] [ORDER BY column];

Group 函数忽视列里面的 null 值,受影响的语句可能是: SQL> SELECT AVG(comm) 2 FROM emp; 结果为:

AVG(COMM)

  550

但可以使用NVL函数强迫group函数在统计时包含null值 【实例】 SQL> SELECT AVG(NVL(comm,0)) 2 FROM emp; 结果为:

AVG(NVL(COMM,0))

   157.14286
  1. 使用GROUP BY子句 格式为: SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column]; 【实例】 SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 GROUP BY deptno; 输出为: DEPTNO AVG(SAL)

   10 2916.6667
   20      2175
   30 1566.6667

GROUP BY 列可以不在select的列表里面 【实例】 SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY deptno; 输出为:

AVG(SAL)

2916.6667 2175 1566.6667

可以根据多个列进行分组 【实例】要实现“根据每个工作求出汇总工资,并按部门分组”: SQL> SELECT deptno, job, sum(sal) 2 FROM emp 3 GROUP BY deptno, job; 原始数据为: DEPTNO JOB SAL


   10 MANAGER        2450
   10 PRESIDENT      5000
   10 CLERK          1300
   20 CLERK           800
   20 CLERK          1100
   20 ANALYST        3000
   20 ANALYST        3000
   20 MANAGER        2975
   30 SALESMAN       1600
   30 MANAGER        2850
   30 SALESMAN       1250
   30 CLERK           950
   30 SALESMAN       1500
   30 SALESMAN       1250

输出为: DEPTNO JOB SUM(SAL)


  10 CLERK          1300
  10 MANAGER        2450
  10 PRESIDENT      5000
  20 ANALYST        6000
  20 CLERK          1900
  20 MANAGER        2975
  30 CLERK           950
  30 MANAGER        2850
  30 SALESMAN       5600
  1. 使用 HAVING 子句来限制分组 SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column]; 【实例】 SQL> SELECT deptno, max(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING max(sal)>2900; 输出为: DEPTNO MAX(SAL)

   10      5000
   20      3000

【实例】 SQL> SELECT job, SUM(sal) PAYROLL 2 FROM emp 3 WHERE job NOT LIKE 'SALES%' 4 GROUP BY job 5 HAVING SUM(sal)>5000 6 ORDER BY SUM(sal); 输出为: JOB PAYROLL


ANALYST 6000 MANAGER 8275

  1. 嵌套GROUP函数 【实例】 显示最大的平均工资 SQL> SELECT max(avg(sal)) 2 FROM emp 3 GROUP BY deptno; 输出为: MAX(AVG(SAL))

2916.6667

/#操纵bit流_dbms

分享到:

举报浏览(754) 评论转载

你可能也喜欢

评论 帮助中心 | 空间客服 | 投诉中心 | 空间协议

©2012 Baidu

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途