2016-06-14 10 views
1
create table kids(
     familyID bigint references a table with families; 
     personID bigint references something that contains records with people/kids 
) 

与えられたファミリ、つまり兄弟のために複数の子供が存在する可能性があります。アイデアは、兄弟を持つ家族の数を数えることです。sqlのレコードの2つのレベルのカウント

このクエリ:

select count(familyID) from kids group by familyID; 

は、それぞれの家族のための子供の合計数が表示され、結果セットが生成されます。したがって、ほとんどの家族は1人の子供、2人の子供などを持っています

これは、結果セットが何かのように見えるはずですので、1人の子供、2人の子供、3人の子供の数をさらに数えますこのような:

kids  count(familyID) 
1   44 
2   10 
3   2 
4   1 

とあれば、あなたの合計数(familyID):デシベルで44 + 11 + 2 + 1 = total_number_of_families。

私はサブクエリでそこに着いてみようとしていますが、コンセプトを把握していないようです。誰か説明できますか?

答えて

0

あなたはうん、それは素晴らしいことだ一時テーブル

select kids , count(*) from 
(
    select familyID, count(*) kids 
    from kids 
    group by familyID) as t 
group by kids 
+0

で行うことができます。ありがとうございました。ちょうど不思議なことですが、これが唯一の方法で同じデータセット(サブクエリを作成)上で複数の繰り返しを含むような問題を解決できますか? – hrs

+0

これは唯一の方法ではありませんが、理解しやすいです...そして潜在的なSQLを学ぶためにはより有益です。 – scaisEdge

関連する問題