Maison >base de données >tutoriel mysql >Comment trouver des paiements de compte en double dans SQL avec et sans filtrage de code postal ?
Détection des paiements de compte en double dans les bases de données SQL
Ce guide montre comment utiliser SQL pour identifier les enregistrements de paiement en double pour un seul utilisateur, avec et sans prise en compte du code postal.
Identification des paiements en double (sans code postal)
La requête SQL suivante identifie efficacement les cas où un utilisateur a plusieurs paiements associés au même numéro de compte :
<code class="language-sql">SELECT user_id, COUNT(*) AS payment_count FROM PAYMENT GROUP BY account_no, user_id, payment_date HAVING payment_count > 1;</code>
Cette requête regroupe les enregistrements de paiement par account_no
, user_id
et payment_date
. La fonction COUNT(*)
compte les paiements pour chaque groupe et la clause HAVING
filtre les résultats, affichant uniquement les groupes avec plus d'un paiement (doublons).
Ajout du filtrage des codes postaux pour une précision améliorée
Pour garantir que seuls les paiements avec des codes postaux distincts soient considérés comme des doublons, nous modifions la requête :
<code class="language-sql">SELECT user_id, account_no, payment_date, COUNT(*) AS payment_count FROM ( SELECT DISTINCT user_id, account_no, zip, payment_date FROM payment ) AS distinct_payments GROUP BY user_id, account_no, payment_date HAVING payment_count > 1;</code>
Cette requête améliorée utilise une sous-requête (distinct_payments
) pour sélectionner des combinaisons uniques de user_id
, account_no
, zip
et payment_date
. La requête principale regroupe et compte ensuite ces enregistrements distincts, identifiant les paiements en double uniquement lorsqu'ils impliquent des codes postaux différents. Cette approche permet une analyse plus précise des paiements en double.
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!