gpt4 book ai didi

sql - 如何同时选择 row_number 和 count over partition?

转载 作者:行者123 更新时间:2023-12-04 18:45:24 27 4
gpt4 key购买 nike

我需要找到重复记录(带有主记录 ID 和重复记录 ID):

select ciid, name from (
select ciid, name, row_number() over (
partition by related_id, name order by updatedate desc) rn
) where rn = 1;

这给了我主记录 ID,但它也包括没有重复的记录。

如果我使用
select ciid, name from (
select ciid, name, row_number() over (
partition by related_id, name order by updatedate desc) rn
) where rn > 1;

这让我得到所有重复的记录,但不是主记录。

我希望如果我做这样的事情:
select ciid, name from (
select ciid, name, row_number() over (
partition by related_id, name order by updatedate desc
) rn, count(*) over (
partition by related_id, name order by updatedate desc
) cnt
) where rn = 1 and cnt > 1;

但是我担心性能,甚至它实际上是否在做我想要的。

如何仅获取重复项的主记录?请注意 name不是唯一的列。只有 ciid是独特的。

最佳答案

我最终在我的问题中使用了类似的查询:

select ciid, name from (
select ciid, name, row_number() over (
partition by related_id, name order by updatedate desc
) rn, count(*) over (
partition by related_id, name desc
) cnt
) where rn = 1 and cnt > 1;

效果出奇的好。主记录是 rn = 1,重复是 rn > 1。确保 count(*) over (partition ..)不能有 order by条款。

关于sql - 如何同时选择 row_number 和 count over partition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com