2016-09-14 6 views
1

宿題に関する質問は、複数のプレゼントがある家の総数を表示することです。下のリストは、それらがどれであるかを示していますが、私はそれらを合計6として表示するためにクエリを実行することはできません。私はまだ新しいですし、Mysqlを学んでいます、無知に対する私の謝罪。質問を修正する

MySQLの使用データは

**address**     **Number of presents per home** 
2 Bay Road        2 
2a Neptune Road       2 
45 Bay Road        2 
59 Black Street       2 
65 Mainway Avenue      3 
89 White Street       2 

問合せ:

SELECT address, SUM(goodBehaviour) AS `Number of Houses with Multiple presents` 
FROM wishlist 
GROUP BY address 
HAVING SUM(goodBehaviour) >1; 

私は住所欄を合計して、いくつかの他のクエリを試してみましたが、私の所望の出力を表示することができていません。ありがとう。

+0

あなたが示したデータが正確であれば、それぞれに2つのプレゼントがそれぞれ6つあります。あなたは実際に何を得ているのか、あなたの実際のデータセットは何ですか? –

+0

何を表示する必要があるのは、複数のプレゼントを持っている合計6つの家があることを示す1つの列の住所の総数です。私は彼らが持っているプレゼントの数を表示する必要はありませんが、単に家全体を表示する必要はありません。 –

答えて

1

問題は、goodBehaviourフィールドの値の合計ですが、1つ以上のプレゼントがあるアドレスの数を数えなければなりません。

各アドレスは、(あなたのサンプルデータに基づいて)あなたのテーブルでちょうど1レコードを持っている場合:あなたは、単一のアドレスに対して複数のレコードを持つことができる場合は、サブクエリにあなたが数を合計する必要が

select count(address) 
from wishlist 
where goodBehaviour >1 

をプレゼントのやプレゼントの合計数が1以上ある場合には、外部クエリ内のアドレスの数を数える:

select count(address) 
from 
    (select address, sum(goodBehaviour) as presents 
    from wishlist 
    group by address) t 
where t.presents>1 
+0

ああ、私は理解しています。それは本当に役に立ちました。私はまだ複数のselect文に慣れていて、複数の集約を使用しています。私はこの列を表示する方法を理解できません。私の謝罪私は、1人以上の子供がプレゼントを受け取るので、重複した住所があることを知らされたはずです。私を助けてくれてありがとう。 –

+0

助けてくれてありがとうございました – Drew

0

あなたが家の合計数が必要な場合 - あなたはサブクエリとしてクエリを使用することができます。

SELECT count(*) FROM (SELECT address, SUM(goodBehaviour) AS `Number of Houses with Multiple presents` 
FROM wishlist 
GROUP BY address 
HAVING SUM(goodBehaviour) >1) x; 
+0

これもまた私が必要としてくれたことでした。あなたも助けてくれてありがとう。クエリの最後のxは、これが何を開始しますか? –

+0

@ S.Aクエリの最後の 'x'はエイリアスです。派生テーブルにはエイリアスを使用する必要があります(from句の派生テーブル=サブクエリ)。私の答えをもう一度チェックすると、私は文字 't'を使ったことが分かります。 – Shadow

関連する問題