我试图计算分区上的运行总和。这似乎比BigQuery SQL running totals中建议的方法更容易,更快捷。
例如:
SELECT corpus,corpus_date,word_count, sum(word_count)over(由corpus分区,corpus_date order by word_count,word DESC)as running_sum 从 [publicdata:samples.shakespeare]
我面临两个问题:
我无法让总和以最常见的单词(具有最高word_count的单词)开头。设置DESC或ASC只是不会改变任何东西,并且总和从最不常见的单词开始。如果我改变订单只包括"按word_count排序"而且运行总和不正确,因为具有相同顺序(==相同word_count)的行产生相同的运行总和。
在我执行的类似查询中(见下文),运行总和的第一行产生的总和为0,尽管第一行的字段I总和不是0 。为什么会这样?如何解决问题以显示正确的运行总和?查询是:
从中选择* (选择
mongo_id,
account_id,
event_date,
trx_amount_sum_per_day,
SUM(trx_amount_sum_per_day)OVER(由mongo_id分配,account_id ORDER BY event_date DESC)AS running_sum,
ROW_NUMBER()OVER(由mongo_id分配,account_id ORDER BY event_date DESC)AS row_num
FROM [xs-polar-gasket-4:publicdataset.publictable]
)按event_date desc的顺序
答案 0 :(得分:7)
问题1:
变化:
SELECT
corpus, corpus_date, word_count, SUM(word_count)
OVER
(PARTITION BY corpus, corpus_date
ORDER BY word_count, word DESC) AS running_sum
FROM [publicdata:samples.shakespeare]
要:
SELECT
corpus, corpus_date, word_count, SUM(word_count)
OVER
(PARTITION BY corpus, corpus_date
ORDER BY word_count DESC, word) AS running_sum
FROM [publicdata:samples.shakespeare]
(原始查询按字词排序,但您想按word_count排序)