BigQuery如何获得每月的总数?

Posted

技术标签:

【中文标题】BigQuery如何获得每月的总数?【英文标题】:BigQuery how to get total count per month? 【发布时间】:2021-12-23 14:27:57 【问题描述】:

我想获取当前或去年每月的总计数,我该怎么做?我尝试从 CURRENT_DATE 变量中提取月份或年份,但没有成功。

我不知道我应该使用 date_trunc 还是 extract。我总是遇到语法错误。我使用 BigQuery 中没有遗留的标准 SQL 语法。

SELECT
  COUNT (*)
FROM
  `mytable`
extract(month from current_date) as grpmonth
WHERE
  test = 12
GROUP BY grpmonth

我想要这样的东西:

2020  Count
----------
Jan   1125
Feb   3308
...
Dec   2043



2021  Count
-----------
Jan   544
Feb   107
...
Dec   232

我遇到的一些错误:

Syntax error: Expected end of input but got keyword EXTRACT at 

【问题讨论】:

将提取(从 current_date 开始的月份)作为 grpmonth 移动到 count() 之后,?虽然你没有向我们展示你想要什么,我只是在猜测 我编辑了我的帖子,以便您可以看到我想要的内容 你的标题是按月计算的,但你想要的输出是按年和月计算的.. 【参考方案1】:

获取当前或去年每月的总计数

考虑以下方法

select 
  extract(year from date_col) year,
  extract(month from date_col) month,
  count(*) total
from your_table
where extract(year from date_col) > extract(year from current_date) - 2 
group by year, month               

【讨论】:

嘿,我尝试了你的建议。我只得到一个以第 12 个月作为结果和计数的行,但我也希望结果中的其他月份作为单独的行。在这种情况下 date_col 是什么,因为我不使用它? date_col 是您的表 (your_table) 中包含日期的任何列。我的答案中的查询每个月/年返回一行!如果您按原样使用该查询 - 这就是您应该得到的。除非您使用额外的 where 子句仅在第 12 个月过滤!如果仍然无法正常工作 - 请参阅 [如何创建最小、完整和可验证的示例。](***.com/help/mcve)【参考方案2】:

您编写了错误的 SQL 语法。您应该将摘录放在选择部分。

SELECT 
    extract(year from _date) as _year, 
    extract(month from _date) as _month,
    data_source.result
from
 UNNEST(GENERATE_DATE_ARRAY('2020-01-01', '2021-12-01', INTERVAL 1 MONTH)) as _date
left join (
    SELECT
        COUNT (*) as result,
        extract(month from current_date) as grpmonth,
        extract(year from current_date) as grpyear
    FROM
        `mytable`
    WHERE
        test = 12
    GROUP BY grpmonth, grpyear
) as data_source on grpyear = extract(year from _date) and _month = extract(month from _date)

您可以自行更改年份范围。

【讨论】:

谢谢,现在错误消失了,但我仍然没有得到预期的结果。现在我得到了 12 个月的总数,如下所示: f0_ : 123123 grpmonth: 12 我想要每月 我更新了答案。你可以试试看。 您好,我尝试了您的建议。似乎我不承认 _year 和 _month 作为最后一行的变量。我收到以下错误:无法识别的名称:_year;你说的是grpyear吗?在 [19:31 哦,是的,我更正了 SQL 语法

以上是关于BigQuery如何获得每月的总数?的主要内容,如果未能解决你的问题,请参考以下文章

从 BigQuery 中的时间戳数据类型中获取每月前 3 个标签数量

使用 Apache Beam 向 BigQuery 传播插入时如何指定 insertId

在 BigQuery 中,您将如何使用两个日期列计算每月和每日总计?

如何在 Google BigQuery 的记录中查询字符串?文档不工作

计算每月的通讯订阅者总数

如何获取 BigQuery 中给定存储库的 GitHub 星总数?