微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL:如何生成在 24 小时内出现超过 2 次的所有个人 ID 的表

如何解决SQL:如何生成在 24 小时内出现超过 2 次的所有个人 ID 的表

我有一张如下所示的表格

用户名 付款 ID 日期时间 金额
UID1 12dw4r434t 19/08/2020 13:40:12 10
UID2 k2dw86774z 19/08/2020 14:30:52 5
UID3 5hjs982835 17/08/2020 09:56:08 7
UID1 hg19283jdg 20/08/2020 07:59:33 12
UID1 2563ghmn77 20/08/2020 08:10:22 54
UID2 999gegh77d 19/08/2020 17:11:37 67
UID2 mnnnhsgdje 20/08/2020 19:18:55 67
UID1 qccc356njd 20/08/2020 16:10:11 87
UID3 mmk0999111 18/08/2020 05:16:29 4
UID3 yyy63hgd72 18/08/2020 05:25:44 4

我希望能够生成所有用户 ID 的表/列表,这些用户 ID 在 24 小时内至少出现 3 次(超过 2 次)。

以上数据的结果是:

用户名
UID1
UID3

明确地说,我希望 24 小时是滚动的。我不是在寻找固定日期范围内的结果。

替代解决方输出

另一种满足我需要的输出解决方案是生成一个表,其中在上表中添加一个额外的列 (Count)。对于每一行,Count 列计算整个表中有多少事务在当前行的事务的 24 小时内(并且对于相同的用户 ID)。我在 Excel 中使用 COUNTIF 轻松地做到了这一点,但无法在 sql 中使用它。以下是我尝试这样做的方法

SELECT
         a."User Id",a."Payment Id",a."created_at",a."Amount",b.m_count
FROM  "Payment Summary Table" AS  a
INNER JOIN( SELECT
             "User Id","created_at",COUNT(*) AS m_count
    FROM  "Payment Summary Table" 
    GROUP BY "Merchant","amount" 
) AS  b ON a."User Id"  = b."User Id"
     AND    b."created_at" <= dateadd (hour,24,a."created_at") 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。