Saltar al contenido

MySQL: ¿Seleccionar los valores n máximos superiores?

Bienvenido a proyecto on line, aquí vas a encontrar la solucíon a lo que necesitas.

Solución:

Si lo haces:

select *
from t
order by value desc
limit N

Obtendrá las N filas superiores.

Si lo haces:

select *
from t join
     (select min(value) as cutoff
      from (select value
            from t
            order by value
            limit N
           ) tlim
    ) tlim
    on t.value >= tlim;

O podrías expresar esto un poco más simplemente como:

select *
from t join
     (select value
      from t
      order by value
      limit N
    ) tlim
    on t.value = tlim.value;

Lo siguiente es conceptualmente lo que desea hacer, pero es posible que no funcione en MySQL:

select *
from t
where t.value >= ANY (select value from t order by value limit N)

Utilice la siguiente consulta SQL.

SELECT salary FROM salesperson 
ORDER BY salary DESC
LIMIT 2,1

Deberías usar self join para esto.

  1. primero encuentre los (n) valores posibles superiores para una columna particular
  2. únelo con la misma tabla según el primario key

Por ejemplo, en la siguiente tabla de muestra

CREATE TABLE `employee` (
  `ID` INT(11)   AUTO_INCREMENT PRIMARY KEY,
  `NAME` VARCHAR(50) NOT NULL,
   `SALARY` INT(11) NOT NULL , 
    JOINING_DATE TIMESTAMP  
) ENGINE=MYISAM 

INSERT INTO  employee (NAME,salary,joining_date)    VALUES('JAMES',50000,'2010-02-02'),
('GARGI',60000,'2010-02-02'),('DAN',30000,'2010-02-02'),('JOHN',10000,'2010-02-02'),('MICHEL',70000,'2010-02-02'),
('STIEVE',50000,'2010-02-02'),('CALRK',20000,'2010-02-02'),('BINNY',50000,'2010-02-02'),('SMITH',40000,'2010-02-02'),
('ROBIN',60000,'2010-02-02'),('CRIS',80000,'2010-02-02');

Con la tabla de datos anterior configurada Consulta para encontrar empleados que tengan los 3 mejores salarios sería :

SELECT e1.* FROM 
(SELECT DISTINCT salary FROM Employee ORDER BY salary DESC LIMIT 3 ) S1
JOIN employee  e1 
ON e1.salary = s1.salary 
ORDER BY e1.salary DESC 

PROPINA:-

Si necesita los 4 mejores, simplemente cambie LIMIT 3 a LIMIT 4

Nos puedes confirmar nuestra tarea mostrando un comentario o dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *