Les meilleurs par groupe

C’est une question à laquelle je réponds fréquemment dans #mysql sur IRC : comment puis-je faire pour trouver les N meilleurs par groupe avec leur rang?

C’est un problème fréquent qui se présente de différentes manières et qui comporte certaines difficultés en SQL.

Quels sont les 5 meilleurs scoreurs par équipe et leur rang?  Quels sont les 3 meilleurs vendeurs par magasin et leur rang? Quelles sont les 10 villes les plus populeuses par pays et leur rang?

L’histoire se complique habituellement quand vient le temps de déterminer le rang des meneurs de chaque groupe.

J’ai expliqué la solution à ce problème des dizaines de fois! C’est long, pénible et jamais simple…

Mais je suis récemment tombé sur un excellent article dédié à ce problème : SQL: Getting TOP N rows for a grouped query.

C’est, de loin, l’explication la plus claire et simple que j’ai vu à ce problème. Un genre de tutoriel pas à pas d’une efficacité redoutable.

Je sens que je vais dorénavant me sauver bien du temps!

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :