以下查询:
select
corpus_date
,sum(count(*)) over (partition by corpus_date) as words_year
,corpus
,count(*) as words
from [publicdata:samples.shakespeare]
group by
corpus_date
,corpus
order by
corpus_date
导致错误消息SELECT * cannot be combined with selecting other fields or expressions.
现在我想知道我是否错过了一个明显的错误,或者BigQuery是否真的不允许组合窗口和聚合函数。我还没有在文件中找到答案。错误消息不会产生任何搜索结果,并且在任何情况下都不合适。
(我此处仅使用莎士比亚数据库进行复制。)
编辑:显然可以通过子选择获得所需的结果,如下所示:
select
corpus_date
,sum(words) over (partition by corpus_date) as words_year
,corpus
,words
from (select
corpus_date
,corpus
,count(*) as words
from [publicdata:samples.shakespeare]
group by
corpus_date
,corpus
) sub
order by
corpus_date
所以我应该澄清一下,我的问题只是是否有人可以证实这种意外行为。
EDIT2:显然它也不可能直接(即没有吸引另一个子选择)在计算中使用窗口函数的结果:-(:
select
corpus
,corpus_date
,words
,1.*words/sum(words) over (partition by corpus_date) as perc_of_year
from (select
corpus_date
,corpus
,count(*) as words
from [publicdata:samples.shakespeare]
group by
corpus_date
,corpus
) sub
order by
corpus_date
,corpus