
1、创建测试表,
create table test_count(id varchar2(20), value varchar2(20))
2、插入测试数据
insert into test_count values(1, 1)
insert into test_count values(2, 1)
insert into test_count values(3, 1)
insert into test_count values(4, 2)
insert into test_count values(6, 1)
insert into test_count values(7, 3)
insert into test_count values(8, 3)
insert into test_count values(9, 3)
insert into test_count values(10, 3)
commit
3、查询表中全量数据,select t.*, rowid from test_count t
4、编写sql,可以得到每一个value重复的个数,并按照由大到小排列;
select value, count(*) from test_count t group by value order by 2 desc
数据库开窗函数count()over()可以实现你的需求,但是你的数据库有没有类似的开窗函数我就不知道的,一般来说oracle应该可以实现,sqlserver和mysql中mysql没有响应的开窗函数,要自己做,sqlserver中有类似的聚合开窗函数,但是count能不能用我不是很确定。select count(*)over(partition by fsu_device_id) 重复次数,你的字段 from (你上面的select语句)
我写了一个最简单的,也就是在你的语句外面又套了一层,你可以试试能不能不套这一层,不过我没有环境没办法测试,所以就直接套了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)