


Comment récupérer les N personnes les plus âgées de chaque groupe dans un ensemble de données ?
sélectionnant efficacement les individus les plus âgés de chaque groupe
Cet article montre deux méthodes pour récupérer le N supérieur (dans ce cas, deux) individus les plus âgés de chaque groupe au sein d'un ensemble de données. Le premier utilise une approche UNION ALL
, tandis que le second utilise la numérotation des lignes pour une solution plus évolutive.
Méthode 1: Union all (adapté à un petit nombre fixe de groupes)
Cette méthode est simple pour un nombre connu et limité de groupes. Il sélectionne les n plus anciens des personnes de chaque groupe individuellement et combine les résultats. Cependant, cette approche devient lourde et inefficace à mesure que le nombre de groupes augmente.
( SELECT * FROM mytable WHERE `group` = 1 -- Group 1 ORDER BY age DESC LIMIT 2 ) UNION ALL ( SELECT * FROM mytable WHERE `group` = 2 -- Group 2 ORDER BY age DESC LIMIT 2 ) -- ... Add more UNION ALL clauses for additional groups
Méthode 2: Numérotation des lignes (solution évolutive pour un grand ou inconnu de groupes)
Cette méthode attribue dynamiquement un numéro de ligne à chaque individu au sein de ses groupes respectifs, ordonnés par âge dans l'ordre descendant. Cela permet une sélection efficace des N plus âgés des n plus âgés dans tous les groupes.
SELECT person, `group`, age FROM ( SELECT person, `group`, age, (@num:=IF(@group = `group`, @num +1, IF(@group := `group`, 1, 1))) AS row_number FROM test t CROSS JOIN (SELECT @num:=0, @group:=NULL) c ORDER BY `group`, Age DESC, person ) AS x WHERE x.row_number <= 2 -- Select the top 2 from each group
Cette approche exploite respectivement les variables @num
et @group
pour suivre le numéro de ligne et le groupe. Le CROSS JOIN
initialise ces variables. La clause finale WHERE
filtre les résultats pour inclure uniquement les 2 premiers individus de chaque groupe. Cette méthode est nettement plus efficace et adaptable que l'approche UNION ALL
pour les ensembles de données avec de nombreux groupes.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
