如何解决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 举报,一经查实,本站将立刻删除。