Maison >base de données >tutoriel mysql >Comment trouver efficacement le nième salaire maximum dans une base de données ?

Comment trouver efficacement le nième salaire maximum dans une base de données ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-22 10:46:28870parcourir

How to Efficiently Find the Nth Maximum Salary in a Database?

Trouver le salaire maximum nᵗʰ à partir d'un tableau des salaires

Question : Comment pouvons-nous trouver efficacement le troisième ou nᵗʰ salaire maximum à partir d'une table de salaires contenant des colonnes pour l'ID de l'employé, le nom de l'employé et l'employé salaire ?

Réponse :

Il existe plusieurs méthodes pour aborder ce problème :

Méthode 1 : Numéro de ligne

SELECT Salary, EmpName
FROM
  (
   SELECT Salary, EmpName, ROW_NUMBER() OVER(ORDER BY Salary) As RowNum
   FROM EMPLOYEE
   ) As A
WHERE A.RowNum IN (2,3)

Cette méthode utilise la fonction ROW_NUMBER() pour attribuer à chaque salaire un numéro de ligne. Nous sélectionnons les salaires sur les numéros de ligne qui correspondent aux postes souhaités (par exemple, 2e, 3e).

Méthode 2 : Sous-requête

SELECT *
FROM Employee Emp1
WHERE (N-1) = (
               SELECT COUNT(DISTINCT(Emp2.Salary))
               FROM Employee Emp2
               WHERE Emp2.Salary > Emp1.Salary
               )

Cette méthode utilise un sous-requête pour compter le nombre de salaires distincts supérieurs au salaire de chaque employé. Le nième salaire maximum est pour le salarié dont le décompte est égal à (n-1).

Méthode 3 : Top Keyword

SELECT TOP 1 salary
FROM (
      SELECT DISTINCT TOP n salary
      FROM employee
      ORDER BY salary DESC
      ) a
ORDER BY salary

Cette méthode utilise le TOP mot-clé pour sélectionner les n salaires les plus élevés. La clause ORDER BY finale garantit que le véritable nième salaire maximum est restitué.

En utilisant l'une de ces méthodes, nous pouvons identifier efficacement le troisième ou le nième salaire maximum à partir d'une table de salaires donnée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn