sql >> Base de Datos >  >> RDS >> Mysql

Consulta MYSQL para encontrar a todos los empleados con el enésimo salario más alto

Has preguntado qué parece como una pregunta razonable. Hay diferentes formas de hacer las cosas en SQL y, a veces, algunos métodos son mejores que otros. El problema de clasificación es solo uno de muchos, muchos ejemplos. La "respuesta" a su pregunta es que, en general, order by va a funcionar mejor que group by en MySQL. Aunque incluso eso depende de los datos particulares y de lo que consideres "mejor".

Los problemas específicos con la pregunta son que tiene tres consultas diferentes que devuelven tres cosas diferentes.

El primero devuelve todos los empleados con un "rango denso" que es el mismo. Esa terminología se usa a propósito porque corresponde a ANSI dense_rank() función que MySQL no admite. Entonces, si sus salarios son 100, 100 y 10, devolverá dos filas con una clasificación de 1 y una con una clasificación de 2.

El segundo arroja resultados diferentes si hay empates. Si los salarios son 100, 100, 10, esta versión no devolverá filas con una clasificación de 1, dos filas con una clasificación de 2 y una fila con una clasificación de 3.

El tercero devuelve un conjunto de resultados completamente diferente, que son solo los salarios y la clasificación de los salarios.

Mi comentario estaba dirigido a probar las consultas en sus datos. De hecho, debe decidir lo que realmente quiere, tanto desde una perspectiva funcional como de rendimiento.