gpt4 book ai didi

google-bigquery - 在谷歌 Bigquery 中分组

转载 作者:行者123 更新时间:2023-12-04 14:47:25 25 4
gpt4 key购买 nike

这是我的 BigQuery

SELECT word,word_count,corpus_date FROM 
[publicdata:samples.shakespeare]
WHERE word="the" ORDER BY word_count asc

这给出了输出
    Row word    word_count corpus_date   
1 the 57 1609
2 the 106 0
3 the 287 1609
4 the 353 1594
5 the 363 0
6 the 399 1592
7 the 421 1611

我希望数据按 corpus_date 分组。我尝试使用 corpus_date 分组
    SELECT word,word_count,corpus_date FROM 
[publicdata:samples.shakespeare]
WHERE word="the" group by corpus_date
ORDER BY word_count asc

但它不允许我按 corpus_date 分组。以任何方式获取按 corpus_date 分组的数据

最佳答案

您需要对查询中的所有非聚合值进行 GROUP BY。但是,由于您只是在查找单个单词,因此您不需要在结果集中显示或什至 GROUP BY 该单词(它是使用 word="the"子句隐式选择的)。

因此,如果您想要按日期分组的单词“the”的总字数总和,您可以运行如下命令:

SELECT
SUM(word_count) as sum_for_the,
corpus_date
FROM
[publicdata:samples.shakespeare]
WHERE
word="the"
GROUP BY
corpus_date
ORDER BY
sum_for_the ASC;

这本身并不是非常有用......所以如果你想做一些更复杂的事情,比如了解每个日期的计数来自哪个语料库,对单词的计数求和并使用这样的查询列出语料库:
SELECT
SUM(word_count) AS sum_for_the, corpus, corpus_date
FROM
[publicdata:samples.shakespeare]
WHERE
word="the"
GROUP BY
corpus_date, corpus
ORDER BY
sum_for_the ASC;

为了列出一个词每年出现的所有卷,我喜欢使用 GROUP_CONCAT 函数。 “the”这个词出现在所有事物中,所以它可能不像“swagger”这样不太常见的词那么有趣。 (这是 many words invented by Shakespeare 之一)。
SELECT
SUM(word_count) AS word_sum, GROUP_CONCAT(corpus) as corpora, corpus_date
FROM
[publicdata:samples.shakespeare]
WHERE
word="swagger"
GROUP BY
corpus_date ORDER BY corpus_date ASC;

更有趣的是查看单词前缀,以及每个卷和日期的单词的 GROUP BY 变体:
SELECT
word, SUM(word_count) AS word_sum, GROUP_CONCAT(corpus) as corpora, corpus_date
FROM
[publicdata:samples.shakespeare]
WHERE
word CONTAINS "swagger"
GROUP BY
word, corpus_date
ORDER BY
corpus_date ASC
IGNORE CASE;

查看 BigQuery Query Language引用和 BigQuery Cookbook更多例子。

关于google-bigquery - 在谷歌 Bigquery 中分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com