【发布时间】:2015-08-09 05:46:34
【问题描述】:
我无法在 BigQuery 中运行总计。
我找到了一个适用于此的示例: BigQuery SQL running totals
SELECT word, word_count, SUM(word_count) OVER(ORDER BY word DESC)
FROM [publicdata:samples.shakespeare]
WHERE corpus = 'hamlet'
AND word > 'a' LIMIT 30
但我真正想做的是计算占总 word_count 80% 的最流行词的数量。所以我尝试先按 word_count 排序时计算运行总数:
SELECT word, word_count, SUM(word_count) OVER(ORDER BY word_count DESC)
FROM [publicdata:samples.shakespeare]
WHERE corpus = 'hamlet'
AND word > 'a' LIMIT 30
但我明白了:
Row word word_count f0_
1 o'er 18 18
2 answer 13 31
3 meet 8 39
4 told 5 44
5 treason 4 **52**
6 quality 4 **52**
7 brave 3 55
从第 5 行到第 6 行的运行总数没有增加。可能是因为在这两种情况下 word_count 都是 4。
我做错了什么?
也许有更好的方法?我的计划是计算运行总数。然后将其除以 sum(word_count) OVER() 并仅过滤少于 80% 的行。然后计算这些行的数量。
【问题讨论】:
标签: google-bigquery window-functions cumulative-sum