2016-06-14 9 views
0

特定の郵便番号のビジネスと一致する複数の業界コードのため、ビジネス名と郵便番号の一対多の関係を持つ表があります。別のテーブルには郵便番号別の世帯が含まれています。重複せずに、ZIPコードの範囲のためのビジネス名による世帯を要約すると、私は照会: SELECT DBANameを、SumHouseholds
AS(郵便番号BY PARTITION)OVER SUM(世帯)ビジネス
FROM Location.ZIPCode =上の場所
を登録しようBusiness.ZIPCode
'1001パーセント' のような郵便番号とDBAName = 'ABC配管'
GROUP DBAName、郵便番号BY、世帯SumHouseholds DESC BY
ORDER重複のないBigQueryのSUMの合計

とget:
行DBAName SumHouseholds
1 ABC配管30
2 ABC配管25
3 ABC配管5

各行は、範囲内の個別のZIPコード、および世帯のその重複排除和を表します。しかし、私はこのために巣SELECTステートメントにしようとすると=それらの行から60 SumHouseholdsを合計したいと思います:

SELECT DBAName、FROM TotalHouseholds AS SUM(SumHouseholds)(
SELECT DBAName、SUM(世帯) Location.ZIPCode = Business.ZIPCode
ON SumHouseholds
ASビジネス
FROM OVER(郵便番号BY PARTITION)、JOIN場所
WHERE '1001パーセント' とDBAName = 'ABC配管')DBAName
BY
GROUPのような郵便番号総家計による注文

一致するすべてのレコードの家計の合計をと返し、の重複を返します。 3つのレコードが各ZIPコードの照会と一致するため、結果は30x3 + 25x3 + 5x3 = 180です。

SUM(SumHouseholds)= 60を返すようにクエリを変更する方法はありますか?

答えて

1

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ではなく、WHERE(s)で宣言された複数の個別のDBAName値に固有のSUM(SumHouseholds)の列が、希望の出力になる場合は、上記の例のsubselectの推奨がありますか? –

+0

正確に何を意味しているのか、コメントでは詳細が分かりません。新しい質問をすべての詳細と例とともに投稿して、私(または他の誰か)がritに答えることができるようにすることをお勧めします –