当前位置:数据库 > Oracle >>

oracle分组函数、临时表

oracle分组函数、临时表
 
一.分组函数 
max min avg count sum 
1,整个结果集是一个组 
   1) 求部门30 的最高工资,最低工资,平均工资,总人数,有工作的人数,工种数量及工资总和 
     select max(ename),max(sal), 
     min(ename),min(sal), 
     avg(sal), 
     count(*) ,count(job),count(distinct(job)) , 
     sum(sal) from emp where deptno=30; 
2, 带group by 和 having 的分组 
   1)按部门分组求最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和 
    select deptno, max(ename),max(sal), 
    min(ename),min(sal), 
    avg(sal), 
    count(*) ,count(job),count(distinct(job)) , 
    sum(sal) from emp group by deptno; 
   
   2)部门30的最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和 
    select deptno, max(ename),max(sal), 
    min(ename),min(sal), 
    avg(sal), 
    count(*) ,count(job),count(distinct(job)) , 
    sum(sal) from emp group by deptno having deptno=30; 
   
3, stddev 返回一组值的标准偏差 
    select deptno,stddev(sal) from emp group by deptno; 
    variance 返回一组值的方差差 
    select deptno,variance(sal) from emp group by deptno; 

4, 带有rollup和cube操作符的Group By 
    rollup 按分组的第一个列进行统计和最后的小计 
    cube 按分组的所有列的进行统计和最后的小计 
    select deptno,job ,sum(sal) from emp group by deptno,job; 
    select deptno,job ,sum(sal) from emp group by rollup(deptno,job); 
    cube 产生组内所有列的统计和最后的小计 
    select deptno,job ,sum(sal) from emp group by cube(deptno,job); 

 

 
二、临时表 
   只在会话期间或在事务处理期间存在的表. 
   临时表在插入数据时,动态分配空间 
   create global temporary table temp_dept 
   (dno number, 
   dname varchar2(10)) 
   on commit delete rows; 
   insert into temp_dept values(10,'ABC'); 
   commit; 
   select * from temp_dept; --无数据显示,数据自动清除 
   on commit preserve rows:在会话期间表一直可以存在(保留数据) 
   on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据)

 


CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,