编写一个sql语句,只有当工资少于5000,而且最高工资超过15000时,才显示部门ID
以及该部门支付的最低工资和最高工资。。
【以下是表结构】emp_id                   number(5)       not       null
last_name       varchar2(30)       not       null
first_name       varchar2(30)
dept_id       number(2)
job_cat       varchar2(30)
salary       number(8,2)   【不用PL/SQL语句查询】...求解.....拜谢大侠中..........【急】

解决方案 »

  1.   

    select empid, max(salary), min(salary)
    from xxx 
    group by empid
    having max(salary)>15000 and min(salary)<5000
      

  2.   

    select depid,max(salary),min(salary)
    from (select *,max(salary),min(salary)
    from xxx where max(salary)>15000 and min(salary)<5000)
    group empid
      

  3.   

    楼主我没太明白你的意思
    “工资少于5000,而且最高工资超过15000”
    是说salary同时满足这两个条件吗?
    还是分别啊?
    另外在表中你说的最高工资和最低工资没有单独的字段
    那我是不是可以理解成低于5000的最低值和高于15000的最高值啊???
      

  4.   

    select   empid,   max(salary),   avg(salary) 
    from   xxx   
    group   by   empid 
    having   max(salary)> 15000   and   avg(salary) <5000 
      

  5.   

    SQL和LS的类似:select       dept_id,       max(salary),       avg(salary)   
    from       xxx       
    group       by       dept_id   
    having       max(salary)>   15000       and       avg(salary)   <5000   
      

  6.   

    而理解成"只有当个人工资少于5000"时, 则应为:
    SELECT DISTINCT DEPT_ID, MIN_SALA, MAX_SALA
    FROM 
        (
        SELECT DEPT_ID, 
               MAX(SALARY) OVER (PARTITION BY DEPT_ID ORDER BY EMP_ID) MAX_SALA,
               MIN(SALARY) OVER (PARTITION BY DEPT_ID ORDER BY EMP_ID) MIN_SALA,
               SALARY
        FROM TABLE1
        )
      

  7.   

    其实这题倒不是很难。只是因为文字效应会让我们产生歧义。我是这样理解的。从业务方面入手,一个公司有很多部门,就是dept_id。每个部门下面有很多人,就是last_name,按中国习惯,
    last_name就是中国人的姓,first_name就是名。这个题目是让我们做一张工资报表。最简单的报表就是emp_id first_name last_name salary
    001    三           张          3,000
    002    四           李          7,000
    003    五           赵         16,000我们假设张三,李四,王五在同一个部门,但是贫富差距很明显,题目中就是让我们把这种情况显示出来。
    大概得到的结果应该这样:
    emp_id first_name last_name dept_id salary max(salary) min(salary)
    001    三           张             1     3,000       3,000      16,000
    002    四           李             1     7,000       3,000      16,000
    003    五           赵             1    16,000       3,000      16,000如果张三,李四,王五工资都在5000-15000之间。那么就不显示dept_id,max(salary), min(salary)emp_id first_name last_name salary
    001    三           张          7,000
    002    四           李          7,000
    003    五           赵          7,000具体SQL文我还没写好,希望高手们指导一下。
    我是新人,希望楼主给点辛苦钱,鼓励一下吧^-^
      

  8.   

    上面的字段歪了,我重新对齐了。不好意思。emp_id   first_name   last_name   salary 
    001         三          张            3,000 
    002         四          李            7,000 
    003         五          赵           16,000 我们假设张三,李四,王五在同一个部门,但是贫富差距很明显,题目中就是让我们把这种情况显示出来。 
    大概得到的结果应该这样: 
    emp_id   first_name   last_name   dept_id   salary   max(salary)   min(salary) 
    001         三          张               1       3,000        3,000        16,000 
    002         四          李               1       7,000        3,000        16,000 
    003         五          赵               1      16,000        3,000        16,000 如果张三,李四,王五工资都在5000-15000之间。那么就不显示dept_id,max(salary),   min(salary) emp_id   first_name   last_name   salary 
    001         三             张         7,000 
    002         四             李         7,000 
    003         五             赵         7,000 
      

  9.   

    SELECT EMPID, MAX(SALARY), MIN(SALARY)
      FROM XXX
     GROUP BY EMPID
    HAVING MAX(SALARY) > 15000 AND MIN(SALARY) < 5000