我有一张名为PAYMENT的桌子.在这个表中,我有一个用户ID、一个帐号、一个邮政编码和一个日期.我想找到所有用户的所有记录,这些用户每天使用相同的帐号进行一次以上的支付.

UPDATE:此外,应该有一个过滤器,而不仅仅是统计邮政编码不同的记录.

这是桌子的样子:

| user_id | account_no | zip   |      date |
|       1 |        123 | 55555 | 12-DEC-09 | 
|       1 |        123 | 66666 | 12-DEC-09 |
|       1 |        123 | 55555 | 13-DEC-09 |
|       2 |        456 | 77777 | 14-DEC-09 |
|       2 |        456 | 77777 | 14-DEC-09 |
|       2 |        789 | 77777 | 14-DEC-09 |
|       2 |        789 | 77777 | 14-DEC-09 |

结果应该与此类似:

| user_id | count |
|       1 |     2 |

您将如何在SQL查询中表达这一点?我在考虑加入自助,但由于某种原因,我的计数是错误的.

推荐答案

使用HAVING子句并按使行唯一的字段分组

下面将找到

每天使用同一帐号进行一次以上付款的所有用户

SELECT 
 user_id ,
 COUNT(*) count
FROM 
 PAYMENT
GROUP BY
 account,
 user_id ,
 date
HAVING
COUNT(*) > 1

Update

 SELECT 
    user_id,
    account_no , 
    date,
        COUNT(*)
 FROM
    (SELECT DISTINCT
            user_id,
            account_no , 
            zip, 
            date
         FROM
            payment 
    
        ) 
        payment
 GROUP BY
    
    user_id,
    account_no , 
    
    date
HAVING COUNT(*) > 1

Sql相关问答推荐

Oracle SQL对列进行汇总并在列表底部显示总计

如何根据SQL中的列条件获取下一个时间戳?

Postgresql -如何计算刷卡和刷卡时间

SQL更新,在2个额外的表上使用内部连接

用于动态查询情况的存储过程常识模式

部分匹配表中元素的MariaDB查询查找结果

从日期开始向前填充重复项

如何查询jsonb列是一个对象数组?

是否可以为表中的所有列生成散列值?

在SQL GROUP BY中的某些行之后执行计算

SQL Athena/prest判断值是否在嵌套的json数组中

从选定记录中提取摘要作为值的划分

如何根据 SQL 中的阈值标记一个集群中的所有值?

将空 JSON 数组添加到 SQL Server 表列中的 JSON 字符串

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

Postgres存在限制问题「小值」

根据行号将列转置为没有任何id或键列的行

在 MS Access VBA 中,如何测量显示查询的时间?

具有日期时间条件的存储过程

BigQuery - 将 TIMESTAMP 转换为 HH:MM:SS,然后识别 TIME_DIFF