Extraction de lignes de date maximales avec des montants de chèque non nuls en SQL
Cet exemple montre comment sélectionner des groupes uniques avec les dates les plus récentes et des valeurs de contrôle non nulles à partir d'un ensemble de données contenant des groupes, des dates et des valeurs monétaires (espèces et chèques).
Une première tentative utilisant cette requête s'est avérée insuffisante :
<code class="language-sql">SELECT group, MAX(date), checks FROM table WHERE checks > 0 GROUP BY group ORDER BY group DESC</code>
Cette requête a renvoyé toutes les dates et les valeurs de contrôle pour chaque groupe, pas seulement les données de la ligne avec la date maximale.
La solution implique une approche en deux étapes :
Tout d'abord, nous identifions la date maximale pour chaque groupe avec des valeurs de contrôle non nulles :
<code class="language-sql">SELECT group, MAX(date) AS max_date FROM table WHERE checks > 0 GROUP BY group</code>
Ensuite, nous joignons cet ensemble de résultats à la table d'origine pour récupérer le checks
correspondant (et d'autres colonnes pertinentes) pour ces lignes de date maximale :
<code class="language-sql">SELECT t.group, a.max_date, t.checks FROM table t INNER JOIN ( SELECT group, MAX(date) AS max_date FROM table WHERE checks > 0 GROUP BY group ) a ON a.group = t.group AND a.max_date = t.date;</code>
Cette jointure interne garantit que seules les lignes correspondant à la fois à la date maximale et aux critères de vérification non nuls sont incluses dans la sortie finale.
Bonne pratique : L'utilisation de mots descriptifs et non réservés pour les noms de colonnes (par exemple, group_id
au lieu de group
) améliore la lisibilité du code et réduit le risque d'erreurs.
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!