Requête SQL pour identifier plusieurs paiements
Les requêtes de base de données sont essentielles pour l'analyse des données. Cet exemple se concentre sur la table PAYMENT
, contenant les identifiants utilisateur, les numéros de compte, les codes postaux et les dates de paiement. L'objectif est d'identifier les utilisateurs qui ont effectué plusieurs paiements le même jour en utilisant le même numéro de compte mais à partir de codes postaux différents.
Nous pouvons y parvenir en utilisant la clause HAVING
de SQL, qui filtre les résultats groupés. Voici une requête pour y parvenir :
<code class="language-sql">SELECT user_id, account_no, date, COUNT(*) AS payment_count FROM (SELECT DISTINCT user_id, account_no, zip, date FROM payment) AS distinct_payments GROUP BY user_id, account_no, date HAVING COUNT(*) > 1;</code>
Cette requête utilise d'abord une sous-requête (distinct_payments
) pour éliminer les entrées en double basées sur user_id
, account_no
, zip
et date
. La requête principale regroupe ensuite les enregistrements restants par user_id
, account_no
et date
, en comptant les paiements pour chaque groupe. La clause HAVING
garantit que seuls les groupes avec plus d'un paiement (indiquant plusieurs paiements provenant de différents codes postaux le même jour) sont renvoyés. La colonne payment_count
indique le nombre de paiements pour chaque utilisateur éligible.
Cette approche identifie efficacement les activités suspectes dans lesquelles un utilisateur peut utiliser plusieurs emplacements pour effectuer des transactions le même jour avec le même compte.
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!