Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Pembayaran Akaun Duplikat dalam SQL dengan dan tanpa Penapisan Kod ZIP?
Mengesan Pembayaran Akaun Pendua dalam Pangkalan Data SQL
Panduan ini menunjukkan cara menggunakan SQL untuk menentukan rekod pembayaran pendua untuk pengguna tunggal, dengan dan tanpa pertimbangan kod ZIP.
Mengenal pasti Pembayaran Pendua (Tanpa Poskod)
Pertanyaan SQL berikut dengan cekap mengenal pasti keadaan di mana pengguna mempunyai berbilang pembayaran yang dikaitkan dengan nombor akaun yang sama:
<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>
Pertanyaan ini mengumpulkan rekod pembayaran mengikut account_no
, user_id
dan payment_date
. Fungsi COUNT(*)
mengira pembayaran untuk setiap kumpulan, dan klausa HAVING
menapis hasil, menunjukkan hanya kumpulan dengan lebih daripada satu pembayaran (pendua).
Menambah Penapisan Kod ZIP untuk Ketepatan Dipertingkat
Untuk memastikan bahawa hanya pembayaran dengan kod ZIP yang berbeza dianggap sebagai pendua, kami mengubah suai pertanyaan:
<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>
Pertanyaan dipertingkat ini menggunakan subkueri (distinct_payments
) untuk memilih gabungan unik user_id
, account_no
, zip
dan payment_date
. Pertanyaan utama kemudian mengumpulkan dan mengira rekod yang berbeza ini, mengenal pasti pembayaran pendua hanya apabila ia melibatkan kod ZIP yang berbeza. Pendekatan ini menyediakan analisis pembayaran pendua yang lebih tepat.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Pembayaran Akaun Duplikat dalam SQL dengan dan tanpa Penapisan Kod ZIP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!