Maison > base de données > tutoriel mysql > Comment trouver la personne la plus âgée de chaque groupe en SQL ?

Comment trouver la personne la plus âgée de chaque groupe en SQL ?

DDD
Libérer: 2025-01-23 22:52:10
original
694 Les gens l'ont consulté

How to Find the Oldest Person in Each Group in SQL?

Récupération efficace des enregistrements les mieux classés dans des données SQL groupées

Cet exemple montre comment identifier la personne la plus âgée de chaque groupe dans une table SQL, en tenant compte de l'ordre alphabétique pour résoudre les égalités. La structure du tableau comprend les colonnes « Personne », « Groupe » et « Âge » :

Exemple de tableau :

Person Group Age
Bob 1 32
Jill 1 34
Shawn 1 42
Jake 2 29
Paul 2 36
Laura 2 39

Objectif : Trouver la personne la plus âgée de chaque groupe, en priorisant par ordre alphabétique si les âges sont identiques.

Solution SQL :

<code class="language-sql">SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND (o.Age < b.Age OR (o.Age = b.Age AND o.Person > b.Person))
WHERE b.Person IS NULL;</code>
Copier après la connexion

Explication :

Cette requête utilise un LEFT JOIN pour comparer chaque personne (o) avec toutes les autres personnes du même groupe (b). La clause ON filtre les lignes où :

  1. o.Age < b.Age : o est plus jeune que b (ce qui signifie que o n'est pas le plus âgé).
  2. o.Age = b.Age AND o.Person > b.Person : o a le même âge que b, mais par ordre alphabétique plus tard (ce qui signifie que o n'est pas le plus âgé par ordre alphabétique).

La clause WHERE b.Person IS NULL filtre toutes les lignes de o qui ont eu une correspondance dans b, ne laissant que la personne la plus âgée (ou la première par ordre alphabétique en cas d'égalité) dans chaque groupe.

Exploration plus approfondie :

Pour une compréhension plus complète des techniques SQL avancées et des pièges potentiels, reportez-vous à des ressources telles que « SQL Antipatterns Volume 1 : Éviter les pièges de la programmation de bases de données. »

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal