


Récupérer les deux meilleurs scores pour des groupes individuels en SQL
Dans une base de données relationnelle, l'extraction de données significatives à partir de grands ensembles de données implique souvent de regrouper des enregistrements en fonction sur des caractéristiques spécifiques. Lors de la récupération de données à partir d'ensembles groupés, il est courant d'obtenir les valeurs les plus élevées ou les plus basses au sein de chaque groupe à l'aide de fonctions d'agrégation. Cependant, que se passe-t-il si vous devez sélectionner les N premières lignes pour chaque groupe ?
Considérez le tableau suivant avec les noms des étudiants et leurs scores correspondants :
NAME | SCORE |
---|---|
willy | 1 |
willy | 2 |
willy | 3 |
zoe | 4 |
zoe | 5 |
zoe | 6 |
La fonction d'agrégation pour le regroupement permet uniquement vous d'obtenir le score le plus élevé pour chaque nom. Pour récupérer les deux meilleurs scores de chaque élève, une approche différente est nécessaire.
La requête suivante y parvient en utilisant une sous-requête pour suivre le classement des scores de chaque élève au sein de leurs groupes respectifs :
SELECT * FROM test s WHERE ( SELECT COUNT(*) FROM test f WHERE f.name = s.name AND f.score >= s.score ) <p><strong>Décomposition de la requête :</strong></p>
- La requête externe, SELECT * FROM test s, récupère tous lignes de la table de test et les alias s.
-
La sous-requête, entre parenthèses, calcule le rang du score de chaque élève :
- SELECT COUNT(*) FROM test f : Cette partie compte le nombre de lignes dans la table de test où le nom (f.name) correspond au nom de la ligne actuelle (s.name) et le score (f.score) est supérieur ou égal au score de la ligne actuelle (s.score).
- La clause WHERE applique un filtre à la requête externe, en sélectionnant uniquement ces lignes dont le rang (tel que déterminé par la sous-requête) est inférieur ou égal à 2.
Sortie :
L'exécution de cette requête renverra les résultats suivants :
NAME | SCORE |
---|---|
willy | 2 |
willy | 3 |
zoe | 5 |
zoe | 6 |
Cette requête récupère efficacement les deux premiers scores pour chaque élève, offrant une vue plus complète de leurs performances par rapport à l'utilisation d'une simple agrégation MAX().
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!

La maîtrise de la méthode d'ajout d'utilisateurs de MySQL est cruciale pour les administrateurs et les développeurs de la base de données car il garantit le contrôle de sécurité et d'accès de la base de données. 1) Créez un nouvel utilisateur à l'aide de la commande CreateUser, 2) Attribuer des autorisations via la commande Grant, 3) Utilisez FlushPrivileges pour vous assurer que les autorisations prennent effet, 4) Audit régulièrement et nettoyez les comptes d'utilisateurs pour maintenir les performances et la sécurité.

ChooseCharForfixed-LengthData, Varcharforvariable-LengthData, andTextForLargetExtFields.1) ChariseFicientForConsistent-LengthDatalikEcodes.2)

Les meilleures pratiques pour gérer les types de données de chaîne et les index dans MySQL incluent: 1) la sélection du type de chaîne approprié, tel que le char pour la longueur fixe, le varchar pour la longueur variable et le texte pour un grand texte; 2) Soyez prudent dans l'indexation, évitez de sur-indexer et créez des index pour les requêtes communes; 3) Utilisez des index de préfixe et des index de texte complet pour optimiser les recherches de chaînes longues; 4) Surveiller et optimiser régulièrement les index pour maintenir les index petits et efficaces. Grâce à ces méthodes, nous pouvons équilibrer les performances de lecture et d'écriture et d'améliorer l'efficacité de la base de données.

Toaddausererremotelytomysql, suivi de l'essence: 1) ConnectTomysqlasroot, 2) CreateEnewUserwithRemoteAccess, 3) GRANTNECESSARYPRIVILEGES et 4) Flushprivileges.BecautiousOfSecurityRisksBylimitingpasw

Tostorestringsefficantlyinmysql, choosetherighdatatypebaseneyourneds: 1) usECHarforfixed-LengthStringSlikeCountryCodes.2) useVarcharforvariable-LengthStringSlikenames.3) usteTextforlong-fortextContente.4)

Lors de la sélection des types de données BLOB et de texte de MySQL, BLOB convient au stockage des données binaires, et le texte convient au stockage des données de texte. 1) BLOB convient aux données binaires telles que les images et l'audio, 2) le texte convient aux données de texte telles que des articles et des commentaires. Lors du choix, les propriétés des données et l'optimisation des performances doivent être prises en compte.

Non, vous ne faites pas partie de surrootuserinmysqlforyourproduct.instead, CreateSpecificusersrswithLimimitedPrivileGtoenHancesECurecUrit andPerformance: 1) CreateEnewUserwithastrongPassword, 2) GrantonlyNeceSaryPermiseSmissionStothisser, 3) régulièrement

MysqlstringDatatypessHouldBechosen BasedAdatacharActeristicsandUsecases: 1) USECHARFORFIXED-LETHSTRINGSLIKECOUNTRYCODES.2)


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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.
