2012-02-15 4 views
1

PK属性から値の最も多数を持っているテーブルから値を見つける。(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 

R [i]の数が最大であるMo [i]の値を探したいとします。たとえば、上記の場合、Mo1には最大R [i]の値が含まれているため、Mo1を返す必要があります。

Iカウントを使って処理していますが、まだ成功していません。

ここに私が書いたものがあります

select Mo from table1 where Mo=(select max(r.Mo),max(count((r.Mo))) from table1)r group by r.Mo 

答えて

0

このお試しください:

Mo | cnt 
----+---- 
Mo3 | 2 
Mo2 | 1 
Mo4 | 1 
Mo1 | 4 
Mo6 | 1 
Mo9 | 1 

にそれは、この中で、その結果、カウントすることによって、これを注文し、その結果、コラムMoによって

select Mo from 
(
    select Mo from 
    (
     select Mo, count(*) cnt 
     from table1 
     group by Mo 
    ) 
    order by cnt desc 
) where rownum = 1; 

この最初のグループのテーブルを

Mo 
--- 
Mo1 
Mo3 
Mo6 
Mo2 
Mo4 
Mo9 

そしてそれを単純に結果の最初の行が返され、結果はMo1になります。

+0

実際には、私は数ヶ月後にSQLを使って遊んでいます。だから、rownumの使い方を再考しませんでした。おかげで多くのダン – typedef1

関連する問題