求某列出现次数最多额SQL

[复制链接]
查看11 | 回复9 | 2014-6-13 06:00:13 | 显示全部楼层 |阅读模式
create table t(a int,b varchar2(2));
insert into t values(1,'a');
insert into t values(1,'a');
insert into t values(1,'a');
insert into t values(1,'b');
insert into t values(2,'c');
insert into t values(2,'d');
insert into t values(2,'d');
insert into t values(3,'e');
insert into t values(3,'e');
insert into t values(3,'f');
insert into t values(3,'f');
commit;
求某值出现次数最多的SQL写法
select * from t;
A B
---------- --
1 a
1 a
1 a
1 b
2 c
2 d
2 d
3 e
3 e
3 f
3 f


求一SQL,???部分能显示出现次数最多的列(表的第二列,a出现三次,d出现两次,e和f都出现两次,所以显示a,d,e),若出现次数一样,则随便选一个

select a,????? from t group by a;
a?????
-------- ------
1
a
2
d
3
e
--这里显示e或者f都可以
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
如果多加一行
insert into t values(3,'a');
其结果为何?
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
看情况应该还是显示 e或者f
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
SQL> select a, b
2from (select a, b, c, row_number() over(partition by a order by c desc) rn
3
from (select a, b, count(*) over(partition by a, b order by b) c
4
from t))
5 where rn = 1
6/

A B
--------------------------------------- --

1 a

2 d

3 e
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
应该就是按A,B分组计数排序吧
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
bfc99 发表于 2015-10-23 09:32
如果多加一行
insert into t values(3,'a');

是按第一列分组的,3如果加一行,结果没影响
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
solomon_007 发表于 2015-10-23 09:50
SQL> select a, b
2from (select a, b, c, row_number() over(partition by a order by c desc) rn
...

这个可以实现,谢谢
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
habulu 发表于 2015-10-23 10:21
是按第一列分组的,3如果加一行,结果没影响

select a,b
from (
select a,b,count(*) from t group by a,b order by count(*) desc)
where rownum<=3;
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
就是直接 a,b分组统计 数量前三的呗
回复

使用道具 举报

千问 | 2014-6-13 06:00:13 | 显示全部楼层
bfc99 发表于 2015-10-23 10:28
select a,b
from (
select a,b,count(*) from t group by a,b order by count(*) desc)

上面是特例,其实不是只求上面这种情况
a列的distinct值可能会很多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行