Maison >base de données >tutoriel mysql >Comment obtenir les N premiers résultats par groupe dans Oracle sans sous-requêtes ?
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 fonctionrank()
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!