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中文网其他相关文章!