gpt4 book ai didi

sql - 如何获得 Oracle 中不同记录的最高计数?

转载 作者:行者123 更新时间:2023-12-04 22:48:39 26 4
gpt4 key购买 nike

我有一个包含大量记录的表,其中一些字段是重复的。我想要每个重复中最常见的。

所以,如果我的表有如下数据:

 ID     Field1     Field2  
1 A 10
2 A 12
3 B 5
4 A 10
5 B 5
6 A 10
7 B 8
8 B 5
9 A 10

我可以选择不同的并获得计数:
select distinct Field1, Field2, count(Field1)
from Table
group by Field1, Field2
order by Field1, count(Field1) desc

这会给我
Field1    Field2     Count
A 10 4
A 12 1
B 5 3
B 8 1

但是,我只想要具有最高计数的每个 Field1 的记录。我一直在与 rank() 对分区和子查询进行斗争,但还没有找到使用两个字段来实现唯一性和按计数选择最高记录的正确语法。我一直在寻找,我确定有人问过这个问题,但我找不到。

我想得到以下
Field1     Field2       (optional) Count 
A 10 4
B 5 3

目标是查看一个只有一点不正确数据的表(field1 和 field2 之间的链接错误),并根据它通常是什么来确定它应该是什么。我不知道有多少坏记录,因此将 Count 消除到某个阈值以下是可行的,但似乎有点笨拙。

如果更好,我可以制作一个临时表,将我的不同值放入其中,然后从中进行选择,但这似乎没有必要。

最佳答案

我认为这就是你要找的:

select field1, field2, cnt from 
(select field1, field2, cnt, rank() over (partition by field1 order by cnt desc) rnk
from (select distinct Field1, Field2, count(Field1) cnt
from Table1
group by Field1, Field2
order by Field1, count(Field1) desc)
)
where rnk = 1;

SQL fiddle : http://sqlfiddle.com/#!4/fe96d/3

关于sql - 如何获得 Oracle 中不同记录的最高计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13709382/

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