2016-06-14 6 views
0

У меня есть таблица с отношением «один ко многим» имени предприятия к почтовому индексу из-за нескольких отраслевых кодов, соответствующих этому бизнесу для заданного почтового индекса. Отдельная таблица содержит домохозяйства по почтовым индексам. Подведем домохозяйства от имени бизнеса для диапазона почтовых индексов без дублей, я запрашиваю: SELECT, DBAName, SUM (домашние хозяйства) по (PARTITION BY ZipCode) AS SumHouseholds
ОТ Бизнес
РЕГИСТРИРУЙТЕСЬ Расположение
ON Location.ZIPCode = Business.ZIPCode
ГДЕ ZipCode как '1001' % и DBAName = 'ABC' Санитарно-технические
GROUP BY DBAName, ZipCode, Домохозяйства
ORDER BY SumHouseholds DescSUM of SUM в BigQuery без дубликатов

и получить:
Ряд DBAName SumHouseholds
1 АВС Санитарно 30
2 ABC Санитарно 25
3 АВС Санитарно 5

Каждая строка представляет особый почтовый индекс в пределах диапазона, и его дедуплицированных сумма домохозяйств. Тем не менее, я хотел бы суммировать SumHouseholds из этих строк = 60. Когда я пытаюсь гнездовым ЗЕЬЕСТ для этого:

ВЫБРАТЬ DBAName, SUM (SumHouseholds) AS TotalHouseholds FROM (
ВЫБРАТЬ DBAName, SUM (домашние хозяйства) OVER (PARTITION BY ZipCode) AS SumHouseholds
ОТ Бизнес
РЕГИСТРИРУЙТЕСЬ Расположение
ON Location.ZIPCode = Business.ZIPCode
ГДЕ ZipCode как '1001' % и DBAName = 'ABC') Сантехника
GROUP BY DBAName
ПОРЯДОК ПОСРЕДНИКА Всего

Он возвращает сумму домашних хозяйств для всех соответствующих записей с дубликатов. Поскольку 3 записи соответствуют запросу для каждого почтового индекса, результат равен 30x3 + 25x3 + 5x3 = 180.

Как изменить запрос на возврат SUM (SumHouseholds) = 60?

ответ

1

Try ниже

SELECT DBAName, SUM(SumHouseholds) AS TotalHouseholds 
FROM (
    SELECT DBAName, ZIPCode, SUM(Households) AS SumHouseholds 
    FROM Business 
    JOIN Location 
    ON Location.ZIPCode = Business.ZIPCode 
    //WHERE ZIPCode LIKE '1001%' AND DBAName = 'ABC Plumbing' 
    GROUP BY DBAName, ZIPCode 
) 
GROUP BY DBAName 
ORDER BY TotalHouseholds 
+0

Спасибо! Я получил итоговое дедуплицирование, следуя вашему синтаксису, используя SUM (домашние хозяйства) OVER (PARTITION by ZIPCode) AS SumHouseholds и добавляя домашние хозяйства во внутреннюю группу GROUP BY. –

+0

У вас есть рекомендация по подвыборкам в приведенном выше примере, если вместо одного TotalHouseholds желаемым результатом будут отдельные столбцы SUM (SumHouseholds), специфичные для нескольких дискретных значений DBAName, объявленных в WHERE (s)? –

+0

не совсем понятно, что именно вы имеете в виду, а комментарии не позволяют вдаваться в подробности. Я бы порекомендовал вам опубликовать новый вопрос со всеми подробностями и примерами, чтобы я (или кто-то еще) смог ответить rit –