在员工表emp表中,有员工姓名name和工资sal两个字段,我怎么来写sql语句查找出工资低于自己至少有五个人的那些员工的姓名,工资以及低于自己工资的员工数目?谢谢,在线等!

解决方案 »

  1.   

    CREATE TABLE EMP(NAME VARCHAR2(10),SAL INTEGER);
    INSERT INTO EMP VALUES('A1',2015);
    INSERT INTO EMP VALUES('A8',2007);
    INSERT INTO EMP VALUES('A2',2014);
    INSERT INTO EMP VALUES('A14',2001);
    INSERT INTO EMP VALUES('A4',2012);
    INSERT INTO EMP VALUES('A13',2002);
    INSERT INTO EMP VALUES('MY',2011);
    INSERT INTO EMP VALUES('A10',2005);
    INSERT INTO EMP VALUES('A5',2010);
    INSERT INTO EMP VALUES('A12',2003);
    INSERT INTO EMP VALUES('A6',2009);
    INSERT INTO EMP VALUES('A7',2008);
    INSERT INTO EMP VALUES('A9',2006);
    INSERT INTO EMP VALUES('A11',2004);
    COMMIT;
     
    SELECT NAME,SAL FROM(
    SELECT ROWNUM RN,NAME,SAL FROM(SELECT NAME,SAL FROM EMP ORDER BY SAL))
    WHERE RN <(
    SELECT (RN-5) RN FROM(SELECT ROWNUM RN,NAME FROM(SELECT NAME,SAL FROM EMP ORDER BY SAL))WHERE NAME='MY');假设NAME=MY是自己,求数目的话改用select count(*)就可以了
      

  2.   

    SQL> select * from emp order by sal;NAME              SAL
    ---------- ----------
    如来               10
    八戒              100
    哪吒              150
    张衡              150
    赵云              150
    悟空             1000
    张飞             1500
    沙僧             1500
    李白             5500
    爱迪生          1550010 rows selected.Elapsed: 00:00:00.00
    SQL> select name,sal,sal_sort
      2  from   (select name,
      3                 sal,
      4                 rank() over (order by sal)-1 sal_sort
      5          from   emp)
      6  where  sal_sort>=5;NAME              SAL   SAL_SORT
    ---------- ---------- ----------
    悟空             1000          5
    张飞             1500          6
    沙僧             1500          6
    李白             5500          8
    爱迪生          15500          95 rows selected.Elapsed: 00:00:00.00
      

  3.   

    哈哈,我不懂代码,但是看出来了,ATGC(花开蝶舞,木秀鸟栖)题目理解反了
    ========================================== 
      

  4.   

    select * from 
    (
    select name,sal,(select count(1) from emp tt where tt.sal<t.sal) count_sal
    from emp t
    )a
    where a.count_sal>=5