ホームページ >データベース >mysql チュートリアル >SQL を使用して同日に複数の支払いを行ったユーザーを見つける方法
同日に複数の支払いがあるユーザーを検索する SQL クエリ
この記事では、SQL を使用して同日に複数の支払いを行ったユーザーを識別する方法を説明します。さらに、異なる郵便番号のみを考慮するように改良を加えています。 PAYMENT
、user_id
、account_no
、zip
の列を持つ date
テーブルを使用します。
最初のクエリ (個別の郵便番号なし):
最初のアプローチでは、GROUP BY
句と HAVING
句を使用して支払いをカウントします。
<code class="language-sql">SELECT user_id, COUNT(*) AS payment_count FROM PAYMENT GROUP BY user_id, account_no, date HAVING COUNT(*) > 1;</code>
このクエリは、支払いをユーザー、口座番号、日付ごとにグループ化します。 HAVING
句は結果をフィルタリングして、同じアカウントを使用して特定の日に複数の支払いを行ったユーザーのみを表示します。
改善されたクエリ (個別の郵便番号を使用):
個別の郵便番号のみが考慮されるように、グループ化してカウントする前に、ユーザー、アカウント、郵便番号、日付の一意の組み合わせを選択するサブクエリが導入されています。
<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>
この洗練されたクエリは、最初にサブクエリ (distinct_payments
) を使用して個別の支払いレコードのセットを作成します。次に、これらの個別のレコードをグループ化し、HAVING
句を適用して、各支払いの個別の郵便番号のみを考慮して、同じ日に複数の支払いを行ったユーザーを識別します。 これにより、同じ日に同じアカウントに複数の支払いを行ったものの、郵便番号が異なるユーザーは結果に含まれなくなります。
以上がSQL を使用して同日に複数の支払いを行ったユーザーを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。