use*_*114 1 sql oracle count duplicates
我的SQL查询返回4列"A","B","C","D"的结果.
假设结果是:
A B C D
1 1 1 1
1 1 1 2
2 2 2 1
Run Code Online (Sandbox Code Playgroud)
是否可以获得每行中包含"A","B","C"列的重复行数.
例如,预期的结果是:
A B C D cnt
1 1 1 1 2
1 1 1 2 2
2 2 2 1 1
Run Code Online (Sandbox Code Playgroud)
我尝试使用count(*)结束.但它返回查询返回的总行数.另一个信息是,在示例中,我只提到了3列,我需要根据这些列检查计数.但我的实际查询有8列.并且数据库中的行数很大.所以我认为分组在这里不是一个可行的选择.任何提示都很明显.谢谢.
小智 7
也许为时已晚,但可能在oracle中作为分析函数(也称为窗口函数)的计数可以帮助您.当我正确理解您的请求时,这应该可以解决您的问题:
create table sne_test(a number(1)
,b number(1)
,c number(1)
,d number(1)
,e number(1)
,f number(1));
insert into sne_test values(1,1,1,1,1,1);
insert into sne_test values(1,1,2,1,1,1);
insert into sne_test values(1,1,2,4,1,1);
insert into sne_test values(1,1,2,5,1,1);
insert into sne_test values(1,2,1,1,3,1);
insert into sne_test values(1,2,1,2,1,2);
insert into sne_test values(2,1,1,1,1,1);
commit;
SELECT a,b,c,d,e,f,
count(*) over (PARTITION BY a,b,c)
FROM sne_test;
A B C D E F AMOUNT
-- -- -- -- -- -- ------
1 1 1 1 1 1 1
1 1 2 4 1 1 3
1 1 2 1 1 1 3
1 1 2 5 1 1 3
1 2 1 1 3 1 2
1 2 1 2 1 2 2
2 1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
小智 5
要查找重复项,您必须根据键列对数据进行分组
select
count(*)
,empno
from
emp
group by
empno
having
count(*) > 1;
Run Code Online (Sandbox Code Playgroud)
empno即使每个类别存在多个记录(不止一个),这也允许您进行聚合。
| 归档时间: |
|
| 查看次数: |
37625 次 |
| 最近记录: |