• SQL之统计


    单表统计

    select count(*) from emp;
    select job,sum(sal),count(*) from emp group by job;
    select deptno,max(hiredate),min(hiredate) from emp group by deptno;
    select trunc(hiredate,'yyyy'),count(distinct deptno),count(*) from emp group by trunc(hiredate,'yyyy');
    select deptno,listagg(ename,',')within group(order by empno) from emp group by deptno;
    select deptno,cast(listagg(ename,',')within group(order by empno) as varchar(50)) namelist from emp group by deptno;

    多表关联统计

    select * from salgrade;
    select emp.*,grade from emp,salgrade;
    select grade,sum(sal) from emp,salgrade group by grade;
    select emp.*,grade from emp,salgrade where sal between losal and hisal;
    select grade,sum(sal) from emp,salgrade where sal between losal and hisal group by grade;
    select deptno,count(*),count(empno) from emp right join dept using(deptno) group by deptno;
    select dept.deptno,count(*),count(empno) from emp right join dept on emp.deptno=dept.deptno group by dept.deptno;
    select e.deptno,grade,min(sal),max(sal) from emp e,salgrade s,dept d where sal between losal and hisal and e.deptno=d.deptno group by e.deptno,grade order by 1,2;
    select e.deptno,min(sal),max(sal) from emp e,salgrade s,dept d where sal between losal and hisal and e.deptno=d.deptno group by e.deptno order by 1;
    select e.deptno,min(sal),max(sal) from emp e,salgrade s,dept d where sal between losal and hisal and e.deptno=d.deptno group by e.deptno,grade order by 1,2;

     固定行列转换

    create table shigu(
    sjname    varchar2(20),
    yuefeng   varchar2(10),
    sgsl      number);
    
    insert into shigu values('司机张','三月',1);
    insert into shigu values('司机刘','一月',2);
    insert into shigu values('司机刘','二月',1);
    commit;
    insert into shigu values('司机张','二月',2);
    
    select * from shigu;
    select sjname,Decode(yuefeng,'一月',sgsl,0) m1,Decode(yuefeng,'二月',sgsl,0) m2,Decode(yuefeng,'三月',sgsl,0) m3 from shigu;
    select sjname, max(m1), max(m2), max(m3)
      from (select sjname,
                   Decode(yuefeng, '一月', sgsl, 0) m1,
                   Decode(yuefeng, '二月', sgsl, 0) m2,
                   Decode(yuefeng, '三月', sgsl, 0) m3
              from shigu)
     group by sjname;

    分组求和统计

     

    select e.deptno,grade,count(*) from emp e,salgrade s where sal between losal and hisal group by rollup(e.deptno,grade) order by deptno,grade;

    select e.deptno,grade,count(*) from emp e,salgrade s where sal between losal and hisal group by cube(e.deptno,grade) order by deptno,grade;

    select e.deptno,grade,count(*) from emp e,salgrade s where sal between losal and hisal group by e.deptno,rollup(grade) order by deptno,grade;

    下面这个链接总结的不错 

    http://blog.sina.com.cn/s/blog_7e04e0d00101g6jb.html

    只按部门编号和只按薪水等级统计人数

    select e.deptno,grade,count(*) from emp e,salgrade s where sal between losal and hisal group by grouping sets(e.deptno,grade) order by deptno,grade;
  • 相关阅读:
    Android应用性能测试之CPU和内存占用
    每天一个linux命令(30): chown命令
    安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]问题解决的方法
    android adb shell 命令大全
    adb logcat命令查看并过滤android输出log
    Ubuntu里字符编码设置
    linux下GBK->UTF-8文件编码批量转换脚本
    Android开发之如何保证Service不被杀掉(broadcast+system/app)
    android的m、mm、mmm编译命令的使用
    解决 samba不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接
  • 原文地址:https://www.cnblogs.com/lag1/p/15273256.html
Copyright © 2020-2023  润新知