ホームページ >データベース >mysql チュートリアル >郵便番号フィルタリングを使用した場合と使用しない場合で、SQL で重複するアカウントの支払いを見つける方法は?
SQL データベースでの重複アカウント支払いの検出
このガイドでは、SQL を使用して、郵便番号を考慮した場合と考慮しない場合の両方で、単一ユーザーの重複した支払い記録を特定する方法を説明します。
重複した支払いの特定 (郵便番号なし)
次の SQL クエリは、ユーザーが同じ口座番号に関連付けられた複数の支払いを行っているインスタンスを効率的に識別します。
<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>
このクエリは、支払いレコードを account_no
、user_id
、および payment_date
ごとにグループ化します。 COUNT(*)
関数は各グループの支払いを集計し、HAVING
句は結果をフィルタリングして、複数の支払い (重複) があるグループのみを表示します。
精度を高めるために郵便番号フィルタリングを追加
異なる郵便番号を持つ支払いのみが重複とみなされるよう、クエリを変更します。
<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>
この改良されたクエリは、サブクエリ (distinct_payments
) を利用して、user_id
、account_no
、zip
、および payment_date
の一意の組み合わせを選択します。次に、メイン クエリはこれらの個別のレコードをグループ化してカウントし、異なる郵便番号が関係する場合にのみ重複した支払いを特定します。 このアプローチにより、重複支払いをより正確に分析できます。
以上が郵便番号フィルタリングを使用した場合と使用しない場合で、SQL で重複するアカウントの支払いを見つける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。