postgresql - 如何使用 row_number() 将行号分配给 postgresql 中的重复值
问题描述
我在数据中有一些行,其中 agentid 和客户 ID 被重复。像这样
我想为每个重复值分配一个行号,以便结果如下表所示: 表 2:
代理ID | 客户ID | 行号 |
---|---|---|
26 | 1234 | 1 |
26 | 1234 | 2 |
26 | 1234 | 3 |
26 | 1234 | 4 |
26 | 1454 | 1 |
26 | 1256 | 1 |
26 | 1256 | 2 |
30 | 1256 | 1 |
我是 PostgreSQL 新手,所以我尝试了这个:
select agentid, customerid, row_number() OVER () from aa_dev.calls group by agentid, customerid having count(customerid) > 1;
但我想创建我上面在表 2 中提到的东西。请指导我。
解决方案
你要:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY agentid, customerid ORDER BY random()) rn,
COUNT(*) OVER (PARTITION BY agentid, customerid) cnt
FROM aa_dev.calls
)
SELECT agentid, customerid, rn
FROM cte
WHERE cnt > 1;
推荐阅读
- c# - 无法将数据保存到帐户详细信息网格上的自定义字段
- c# - C# ms 访问和子句
- vba - Selection.Find 通配符结果到数组
- java - 在 java.lang.Object 的单个实例中合并多个对象
- c++ - 内存可访问性
- spring-boot - 如何在 Spring Security 调试过滤器之前订购自定义过滤器
- ruby-on-rails - attr_encrypted gem 必须指定一个 iv - Ruby on Rails
- angular - 检查 Protractor 的真值,在 Protractor 方法上的 toBeTruthy,click()
- r - ggplot 没有显示图例
- linux - 在特定目录路径中查找文件