2016-08-12 39 views
3

還有一個類似的問題(Is BigQuery ROLLUP supports grouping by repeated fields),但它沒有一個例子。是否有可能計算BigQuery中重複字段w/rollup的總計?

考慮下面的代碼:

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 

凡theTable包含印象和兩個用戶的點擊(表僅具有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(10!)個展示。在我看來,總數的正確值爲:

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

有什麼方法可以得到正確的總數w/o單獨的查詢嗎?謝謝!

下面

回答

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 
相關問題