zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    网络流24题-[CTSC1999]家园
    网络流24题-孤岛营救问题
    汽车加油行驶问题(分层图最短路)
    送外卖(可重复点的哈密顿路径)
    信与信封问题
    最小完全图(最小生成树加边成完全图)
    校园网(有向图加边变成强连通图)
    玩具装箱
    MSTest、NUnit、xUnit对照表
    .NET Core学习 笔记索引
  • 原文地址:https://www.cnblogs.com/lag1/p/15273256.html
Copyright © 2011-2022 走看看