ホームページ >データベース >mysql チュートリアル >郵便番号フィルタリングを使用した場合と使用しない場合で、SQL で重複するアカウントの支払いを見つける方法は?

郵便番号フィルタリングを使用した場合と使用しない場合で、SQL で重複するアカウントの支払いを見つける方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-08 21:36:53646ブラウズ

How to Identify Duplicate Account Payments in SQL (With and Without ZIP Code Filtering)

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_nouser_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_idaccount_nozip、および payment_date の一意の組み合わせを選択します。次に、メイン クエリはこれらの個別のレコードをグループ化してカウントし、異なる郵便番号が関係する場合にのみ重複した支払いを特定します。 このアプローチにより、重複支払いをより正確に分析できます。

以上が郵便番号フィルタリングを使用した場合と使用しない場合で、SQL で重複するアカウントの支払いを見つける方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。