Utiliser SQL pour rechercher des utilisateurs avec plusieurs paiements quotidiens sur le même compte
Ce guide montre comment identifier les utilisateurs qui ont effectué plus d'un paiement le même jour, en utilisant le même numéro de compte et avec des codes postaux différents. Nous utiliserons le tableau PAYMENT
, contenant les colonnes user_id
, account_no
, zip
et date
.
Requête SQL initiale :
Cette requête identifie les utilisateurs ayant plusieurs paiements par jour et par compte :
<code class="language-sql">SELECT user_id, COUNT(*) AS payment_count FROM PAYMENT GROUP BY account_no, user_id, date HAVING COUNT(*) > 1;</code>
Cela regroupe les paiements par numéro de compte, identifiant d'utilisateur et date, puis filtre pour afficher uniquement les groupes avec plus d'un paiement.
Requête améliorée pour les codes postaux distincts :
Pour garantir que seuls les utilisateurs ayant plusieurs paiements et codes postaux distincts sont identifiés, nous utilisons une sous-requête :
<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 sous-requête (distinct_payments
) sélectionne d'abord des combinaisons uniques d'utilisateur, de compte, de code postal et de date. La requête principale regroupe et filtre ensuite ce sous-ensemble, garantissant que seuls les enregistrements comportant plusieurs paiements et des codes postaux distincts sont renvoyés. La clause AS distinct_payments
attribue un alias à la sous-requête pour plus de clarté.
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!