首頁 >資料庫 >mysql教程 >如何在使用和不使用郵遞區號過濾的 SQL 中尋找重複的帳戶付款?

如何在使用和不使用郵遞區號過濾的 SQL 中尋找重複的帳戶付款?

Susan Sarandon
Susan Sarandon原創
2025-01-08 21:36:53651瀏覽

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_idpayment_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_nozippayment_date 的唯一組合。然後,主查詢將這些不同的記錄分組和計數,僅在涉及不同郵遞區號時識別重複付款。 這種方法可以更精確地分析重複付款。

以上是如何在使用和不使用郵遞區號過濾的 SQL 中尋找重複的帳戶付款?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn