Maison >base de données >tutoriel mysql >Comment obtenir les N premiers résultats par groupe dans Oracle sans sous-requêtes ?

Comment obtenir les N premiers résultats par groupe dans Oracle sans sous-requêtes ?

DDD
DDDoriginal
2025-01-19 15:01:38252parcourir

How to Get the Top N Results per Group in Oracle Without Subqueries?

Obtenez les meilleurs résultats pour chaque groupe dans la base de données Oracle

Question :

Obtenez les N premiers résultats pour chaque groupe dans une base de données Oracle sans utiliser de sous-requête.

Exemple :

Considérez le tableau donné contenant les informations sur les employés :

emp_id name occupation
1 John Smith Accountant
2 Jane Doe Engineer
3 Jack Black Funnyman

Le but est de récupérer trois salariés (top 3) de chaque métier sans utiliser de sous-requête.

Solution :

<code class="language-sql">select *
from (select emp_id, name, occupation,
      rank() over (partition by occupation order by emp_id) as rank
      from employee)
where rank <= 3;</code>

Instructions :

La fonction

rank() permet d'attribuer un classement à chaque employé au sein de sa profession respective. La clause partition by occupation garantit que chaque profession est classée séparément.

rank <= 3 La condition filtre les salariés dont le classement est inférieur ou égal à 3 dans chaque profession.

Informations complémentaires :

Pour plus d'informations sur la fonction rank(), veuillez consulter les ressources suivantes : https://www.php.cn/link/56138186020206c2b1d99be41c8dc9b8

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