您好
我现在想统计的是某一列的值重复次数大于等于2 的数量,要使用分析函数来实现的,因为统计重复的列和分组的列是不同的,下面是我的想法:
select a,sum((sum(1) over (partition by b))>=2) from table group by a;想法就是这样子的,不过此语句存在问题,在下分析函数还没有怎么用过,请看看这个怎么实现呢,谢谢啦~~~
我现在想统计的是某一列的值重复次数大于等于2 的数量,要使用分析函数来实现的,因为统计重复的列和分组的列是不同的,下面是我的想法:
select a,sum((sum(1) over (partition by b))>=2) from table group by a;想法就是这样子的,不过此语句存在问题,在下分析函数还没有怎么用过,请看看这个怎么实现呢,谢谢啦~~~
解决方案 »
- oracle 没有保存 怎么办?
- 快来抢分,很简单的SQL问题。。。关于两个表的操作
- 如何使用触发器限制一个客户端机器最多连接10个session。
- 字段名中有特殊字符(比如'%')查询语句怎么写?
- 为什么编译不过呢???
- 如何在PL/SQL中读取EXCEL文件????急!!
- 请教,Oracle中Package是一个怎样的概念,有了pck文件怎么将里面的东西(存储过程)放入新数据库?
- 怎样调用存储过程在sqlplus中?
- 怎么获得表中某个字段的长度 时间久不用忘记了 谢谢
- 求教 将游标保存在索引表中
- 关于oracle存储过程,求简单的扫盲
- 基于oracle10g的信息查询系统用什么做前端开发比较好?
with a as(
select 1 as id, 'bbbb' as name from dual
union all
select 1 as id, 'cccc' as name from dual
union all
select 2 as id, 'aaaa' as name from dual
union all
select 2 as id, 'dddd' as name from dual
union all
select 2 as id, 'eeee' as name from dual)
select sub.id, max(cnt) from
(select id, ROW_NUMBER() over (partition by id order by id) cnt from a) sub group by sub.id
having max(cnt) > 2
结果是:(看ID那列就行)
ID MAX(CNT)
2 3
select pk from a group by pk having count(*)>2;
其实按照我的想法,你表中的五条记录,统计之后的数据为2 ,因为你的id只有俩种,而且 id 为1 的是俩个,id为2 的是3 个,我的想法是,id大于等于2 的就算一个,所以统计的结果应该是 2 。而且我分组要按照第二列去分组。
麻烦再看看怎么能实现呢,谢谢啦~~
现在我表中的记录时如下格式的:
1,aa
1,bb
1,cc
1,aa
1,bb
2,cc
2,dd统计的结果应该是按照第二列分组,且重复次数大于等于2的,所以只有一条记录符合这样的要求:
1,bb 这条,结果应该是 1(这里的1指的是数量,不是记录中的),bb
(
id number(2),
name varchar2(4)
)
select 1,name from tb where id=1 group by name having count(name)>=2