2016-08-12 6 views
3

同様の質問(Is BigQuery ROLLUP supports grouping by repeated fields)がありますが、例がありません。 theTableは、2つのユーザのインプレッションやクリックが含ま繰返しフィールドの場合、BigQueryで総合計を計算することはできますか?

SELECT user_segments AS user_segments, 
SUM(impressions) AS imps, 
SUM(clicks) AS clicks, 
FROM [theTable] 
GROUP BY ROLLUP (user_segments) 
ORDER BY imps DESC 
LIMIT 1000 

(テーブルのみすべての行に10行を有し、インプレッション= 1):

{"impressions": 1, "user_segments": [0, 1], "user_id": "A0", "clicks": 0} 
{"impressions": 1, "user_segments": [1, 2], "user_id": "A1", "clicks": 1} 
{"impressions": 1, "user_segments": [0, 1], "user_id": "A0", "clicks": 2} 
{"impressions": 1, "user_segments": [1, 2], "user_id": "A1", "clicks": 0} 
{"impressions": 1, "user_segments": [0, 1], "user_id": "A0", "clicks": 1} 
{"impressions": 1, "user_segments": [1, 2], "user_id": "A1", "clicks": 2} 
{"impressions": 1, "user_segments": [0, 1], "user_id": "A0", "clicks": 0} 
{"impressions": 1, "user_segments": [1, 2], "user_id": "A1", "clicks": 1} 
{"impressions": 1, "user_segments": [0, 1], "user_id": "A0", "clicks": 2} 
{"impressions": 1, "user_segments": [1, 2], "user_id": "A1", "clicks": 0} 

クエリ出力さ

コード次の検討します:

user_segments imps clicks 
null   20 18 
1    10 9 
2    5 4 
0    5 5 

ただし、表には10個のインプレッションがあります。私の意見では合計の正しい値は次のようになります。

user_segments imps clicks 
null   10 9 
1    10 9 
2    5 4 
0    5 5 

別のクエリO/W正しい合計を取得する方法はありますか?ありがとう!以下

答えて

1

あなたが最も可能性が高いすでに使用して明白な回避策です - それでもただ

SELECT * FROM (
    SELECT 
    user_segments AS user_segments, 
    SUM(impressions) AS imps, 
    SUM(clicks) AS clicks 
    FROM theTable 
    GROUP BY user_segments 
), (
    SELECT 
    NULL AS user_segments, 
    SUM(impressions) AS imps, 
    SUM(clicks) AS clicks 
    FROM theTable 
) 
ORDER BY imps DESC, user_segments 
場合に投稿
関連する問題