2008-12-11 11 views

Respuesta

22

En SQL Server 2005 & 2008, cree una consulta subselección clasificado, a continuación, añadir un donde cláusula donde el rango = 5.

select 
    * 
from 
(
    Select 
    SalesOrderID, CustomerID, Row_Number() Over (Order By SalesOrderID) as RunningCount 
    From 
    Sales.SalesOrderHeader 
    Where 
    SalesOrderID > 10000 
    Order By 
    SalesOrderID 
) ranked 
where 
    RunningCount = 5 
4

Estos funcionan en SQL Server 2000

DECLARE @result int 

SELECT TOP 5 @result = Salary FROM Employees ORDER BY Salary DESC 

sintaxis debe estar cerca. No puedo probarlo en este momento.

O usted podría ir con una subconsulta:

SELECT MIN(Salary) FROM (
    SELECT TOP 5 Salary FROM Employees ORDER BY Salary DESC 
) AS TopFive 

Una vez más, no es positivo si la sintaxis es exactamente correcto, pero el enfoque funciona.

+1

Lo quiero en una sola consulta usando porcentaje ... ¿cómo conseguirlo? seleccionar top 5 por ciento columnname desde tablename ordenar por desc usando esto obtenemos los primeros 5 registros, pero solo quiero 5to. – Yogini

+0

Ambas consultas devuelven un solo número que es el quinto salario más alto. ¿Los has probado? – recursive

0

Usted puede intentar algo como:

select salary 
from Employees a 
where 5=(select count(distinct salary) 
     from Employees b 
     where a.salary > b.salary) 
order by salary desc 
+0

Este enfoque funcionará, pero tiene un rendimiento pobre. Es O (n^2), ya que para cada empleado en la consulta externa, toda la tabla debe escanearse nuevamente. – recursive

+0

Además, no será correcto si hay un empate. – recursive

1
SELECT TOP 1 salary 
FROM (
    SELECT DISTINCT TOP n salary 
    FROM employee 
    ORDER BY salary DESC) a 
ORDER BY salary 
where n > 1 -- (n is always greater than one) 

se puede encontrar cualquier número de salario más alto usando esta consulta.

0

Se puede encontrar mediante el uso de esta consulta:

select top 1 salary 
from (select top 5 salary 
     from tbl_Employee 
     order by salary desc) as tbl 
order by salary asc 
0

La consulta siguiente para obtiene el salario más alto después del nombre particular del empleado.

¡Échele un vistazo a eso!

SELECT TOP 1 salary FROM (
    SELECT DISTINCT min(salary) salary 
    FROM emp where salary > (select salary from emp where empname = 'John Hell') 
    ) a 
ORDER BY salary 
0
select * from employee2 e 
where 2=(select count(distinct salary) from employee2 
     where e.salary<=salary) 

su trabajo

1

Para encontrar el salario higest quinto de una base de datos, la consulta es ..

select MIN(esal) from (
    select top 5 esal from tbemp order by esal desc) as sal 

comprobar su trabajo a cabo

1
SELECT MIN(Salary) FROM (
    SELECT TOP 2 Salary FROM empa ORDER BY Salary DESC 
) AS TopFive 

Está funcionando correctamente, por favor úsala.

Cuestiones relacionadas