我有一个包含以下值的表(请忽略index,此处列为R1..R10为表的PK。
1 R1 M1 Mo1
2 R2 M2 Mo3
3 R3 M4 Mo6
4 R4 M2 Mo1
5 R5 M7 Mo1
6 R6 M5 Mo2
7 R7 M6 Mo1
8 R8 M4 Mo4
9 R9 M9 Mo3
10 R10 M3 Mo9
我想找到一个值为Mo [i],其中R [i]的数量是最大值。例如,在上述情况下,Mo1具有最大数量的R [i]值,因此它必须返回Mo1。
我一直在使用count做这些东西,但还没有成功。
这是我写的
select Mo from table1 where Mo=(select max(r.Mo),max(count((r.Mo))) from table1 )r group by r.Mo
答案 0 :(得分:0)
试试这个:
select Mo from
(
select Mo from
(
select Mo, count(*) cnt
from table1
group by Mo
)
order by cnt desc
) where rownum = 1;
首先按照Mo
列对表进行分组,得到
Mo | cnt
----+----
Mo3 | 2
Mo2 | 1
Mo4 | 1
Mo1 | 4
Mo6 | 1
Mo9 | 1
然后按计数对此进行排序,结果如下:
Mo
---
Mo1
Mo3
Mo6
Mo2
Mo4
Mo9
然后它只返回结果的第一行,结果为Mo1
。