如何解决下面的sql查询?

如何解决下面的sql查询?,sql,oracle,Sql,Oracle,考虑一个表EMP_ID和SALARY列中记录数未知的EMP_ID和SALARY列。编写一个查询,根据薪资提取前25%的记录?25%可能没有什么意义,但下面的查询应该适用于最简单的定义 SELECT * FROM (SELECT * FROM Cookie ORDER BY cookies DESC ) WHERE ROWNUM < ((SELECT count(*) FROM Cookie) * 1 / 4) ; 查询返回 NAME COOKIES Name10 10 Na

考虑一个表EMP_ID和SALARY列中记录数未知的EMP_ID和SALARY列。编写一个查询,根据薪资提取前25%的记录?

25%可能没有什么意义,但下面的查询应该适用于最简单的定义

SELECT *
  FROM (SELECT * FROM Cookie ORDER BY cookies DESC )
 WHERE ROWNUM < ((SELECT count(*) FROM Cookie) * 1 / 4) ;
查询返回

NAME    COOKIES
Name10  10
Name9   9

作为记录,在SQL Server中,您可以

SELECT TOP (25) PERCENT *
FROM Cookie
ORDER BY cookies DESC
您可以将分析函数用作(按薪资排序)的
percent\u rank()
,它返回一个介于0和1之间的值:

SELECT salary, emp_id
  FROM 
  (
   SELECT e.*,
          percent_rank() over (order by e.salary) as prcnt_rank_for_sal 
     FROM employee e)
  WHERE  prcnt_rank_for_sal >= 0.25;

您尝试过查询了吗?嗨,欢迎来到Stack Overflow。要求我们写下你的疑问在这里是不可接受的;展示你的尝试,以及失败的地方。
SELECT salary, emp_id
  FROM 
  (
   SELECT e.*,
          percent_rank() over (order by e.salary) as prcnt_rank_for_sal 
     FROM employee e)
  WHERE  prcnt_rank_for_sal >= 0.25;