Groupwise Maximum : Récupération de la dernière position pour chaque titre
Dans l'ensemble de données fourni, votre objectif est de récupérer la dernière position pour chaque titre. Vous avez essayé d'utiliser une requête basée sur la fonction d'agrégation MAX(), mais elle ne renvoie qu'une seule ligne.
Pour résoudre ce problème, vous pouvez utiliser une approche alternative qui utilise LEFT JOIN. Vous trouverez ci-dessous une requête optimisée qui obtient efficacement le résultat requis :
SELECT p1.id, p1.security, p1.buy_date FROM positions p1 left join positions p2 on p1.security = p2.security and p1.buy_date < p2.buy_date where p2.id is null;
Cette requête effectue une jointure externe de la table avec elle-même, en excluant les lignes pour lesquelles une date d'achat ultérieure existe pour le même titre. Par conséquent, il renvoie une seule ligne pour chaque titre avec la dernière date d'achat.
En utilisant cette approche optimisée, vous pouvez réduire considérablement le temps d'exécution des requêtes et récupérer efficacement les informations souhaité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!