2016-09-14 2 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 подарка.

Если каждый адрес имеет только 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

Ahhh Я понимаю, это действительно полезно, я все еще привык к нескольким операторам выбора и использую несколько агрегатов. Мои извинения, я должен был сообщить, что есть повторяющиеся адреса, так как есть более 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

Смежные вопросы