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中文網其他相關文章!