Google bigquery 在google Bigquery中进行分组

Google bigquery 在google Bigquery中进行分组,google-bigquery,Google 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 th

这是我最大的疑问

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  
我希望数据按语料库日期分组。我尝试按语料库日期分组

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

但它不允许我按语料库日期进行分组。要获得按语料库日期分组的数据,您需要按查询中的所有非聚合值进行分组。但是,由于您只是查找单个单词,因此不需要在结果集中显示该单词,甚至不需要按该单词分组(它是使用word=“the”子句隐式选择的)

    SELECT word,word_count,corpus_date FROM 
   [publicdata:samples.shakespeare] 
    WHERE word="the" group by corpus_date 
    ORDER BY word_count asc
因此,如果您想要按日期分组的单词“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;
这本身并不是很有用。。。因此,如果您想做一些更为复杂的事情,例如了解每个日期的计数来自哪个语料库,请将单词的计数相加,并使用如下查询列出语料库:

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”(这是其中之一)这个不太常见的词那么有趣

更有趣的是查看单词前缀,并根据每卷和每段日期对单词的变化进行分组:

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;
请查看参考资料和以获取更多示例