我的数据中有一些行,其中代理商ID和客户ID重复出现。像这样
我想为每个重复的值分配一个行号,以便结果如下表所示:表2:
代理人 | 顾客ID | row_number |
---|---|---|
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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句