如何解决下面的sql查询?
考虑一个表EMP_ID和SALARY列中记录数未知的EMP_ID和SALARY列。编写一个查询,根据薪资提取前25%的记录?25%可能没有什么意义,但下面的查询应该适用于最简单的定义如何解决下面的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
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;