2016-09-14 52 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

如果您顯示的數據是準確的,那麼您應該找回六個地址,每個地址都有兩個禮物。你究竟在做什麼,或者你真正的數據集是什麼? –

+0

我需要展示的是一列中的地址總數,以顯示總共有6個房屋有多個禮物。我不需要顯示他們有多少禮物,但只是爲了顯示總房子。我只是不知道如何只顯示作爲一列,我用這個查詢來嘗試工作, –

回答

1

問題是,您將goodBehaviour字段的值相加,但是您應該計算具有多個存在的地址數。

如果每個地址在你的表僅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

啊我明白,這真的很有幫助,我仍然習慣於多選擇語句和使用多個聚合。我很抱歉,我應該建議,因爲有超過1個孩子接受禮物,所以有重複的地址。非常感謝你幫助我。 –

+0

好的回答thx幫助 – 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