• Oracle单表的复杂查询


    Oracle单表的复杂查询

     

    select avg(sal),max(sal),deptnofrom empgroupby deptno;

    select avg(sal),max(sal),deptnofrom empgroupby deptnohavingavg(sal)>2000orderby deptno;

     

    查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J

    select *from empwhere (sal>500or job='manager')and enamelike'J%';

    按照部门号升序而雇员的工资降序排列

    select *from emporderby deptnoasc , saldesc ;

    select (sal+nvl(comm,0))*12assum,enamefrom emporderbysum;

    求最高工资和最低工资

    selectmax(sal),min(sal)from emp ;

    查询最高工资员工的名字,工作岗位

    select ename,salfrom empwhere (selectmax(sal)from emp )=sal;

    显示工资高于平均工资的员工信息

    select *from empwhere sal>(selectavg(sal)from emp);

    group by having子句
    group by
    用于对查询的结果分组统计,
    having
    子句用于限制分组显示结果。

    如何显示每个部门的平均工资和最高工资

    selectavg(sal),max(sal),deptnofrom empgroupby deptno;

    显示每个部门的每种岗位的平均工资和最低工资?

    selectavg(sal),max(sal),min(sal),deptno,jobfrom empgroupby deptno,job;

    显示平均工资低于2000的部门号和它的平均工资?

    selectavg(sal),max(sal),deptnofrom empgroupby deptnohavingavg(sal)>2000orderby deptno;

    对数据分组的总结:
    1
    分组函数只能出现在选择列表、havingorder by子句中(不能出现在where)
    2
    如果在select语句中同时包含有group by, having, order by那么它们的顺序是group by, having, order by
    3
    在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在group by子句中,否则就会出错。
       如SELECT deptno, AVG(sal), MAX(sal) FROM emp GROUP by deptno HAVING AVG(sal) < 2000;

  • 相关阅读:
    Java类的访问权限
    安卓文件的保存路径问题
    Android 关于android.os.Build介绍
    java,安卓之信息的输出
    20141211
    20141208
    20141206
    20141203
    最近需要学习的东东
    Android:用代码修改一行文字中某几个字的颜色
  • 原文地址:https://www.cnblogs.com/riskyer/p/3297243.html
Copyright © 2020-2023  润新知