2012-02-10 10 views
6
select count(*) as count from table 
group by foreign_id order by count 

これは、各外部IDの一致数を返します。しかし、私が探しているのは結果を要約することです。グループによって返されたグループの数を数える方法は?

だから、結果は次のようになります。

10 results grouping 1 elements 
5 results grouping 2 elements 
7 results grouping 7 elements 
+1

"_n_ results grouping _n_ elements"によってグループ化されるものは何ですか? –

+1

私はこの「5つの結果を2つの要素をグループ化する」というものを得ていません。そこには「5」と「2」は何を表していますか? –

+1

説明するのはかなり難しいです。現在のところ、それが1つのマッチを言うならば、それは外来のキーにマッチした場合、それは次のものに移動し、1つのマッチを言い、次にもう1つのマッチを言うでしょう。何を探しているのかは、見つかった1つのものが何回見つかるかです。または、何回見つかったか? –

答えて

11

[OK]を、それを得ました。

select count(*) as GroupAmount from t1 
group by foreign_id 

あなたがこれをしたら、あなたはグループにそれらを取得する必要があります:質問のタイトルは、質問自体:)

あなたが最初に各FKが表示された回数を知っておく必要があり

よりも良いそれをexpainls各項目は上記と同じように表示されます。これは、になります:

select GroupAmount, count(*) GroupAmountTimes from (
    select count(foreign_id) as GroupAmount from t1 
    group by foreign_id 
) as SubQuery 
group by GroupAmount 

によってグループによって返されたグループの数をカウントし、アクションにhere

+1

sqlfiddleへのリンクが動作を停止しました:( – Shai

4

を、それを参照してください:あなたが何を意味するか説明してください

select foreign_id as GroupAmount, count(foreign_id) as GroupAmountTimes 
from t1 
group by foreign_id 

http://sqlfiddle.com/#!2/35661/42

関連する問題