ホームページ >データベース >mysql チュートリアル >SQL を使用して同日に複数の支払いを行ったユーザーを見つける方法

SQL を使用して同日に複数の支払いを行ったユーザーを見つける方法

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-08 21:50:54444ブラウズ

How to Find Users with Multiple Payments on the Same Day Using SQL?

同日に複数の支払いがあるユーザーを検索する SQL クエリ

この記事では、SQL を使用して同日に複数の支払いを行ったユーザーを識別する方法を説明します。さらに、異なる郵便番号のみを考慮するように改良を加えています。 PAYMENTuser_idaccount_nozip の列を持つ 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 サイトの他の関連記事を参照してください。

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