BigQuery 如何获取每月总计数?

问题描述 投票:0回答:4

我想获取当前或去年每月的总计数,我该怎么做?我尝试从 CURRENT_DATE 变量中提取月份或年份,但这不起作用。

我不知道是否应该使用 date_trunc 还是 extract。我总是遇到语法错误。我使用标准 SQL 语法,而不是 BigQuery 中的旧语法。

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 
google-bigquery
4个回答
0
投票

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

考虑以下方法

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               

0
投票

您编写了错误的 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)

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


0
投票

您的查询有语法错误。这应该有效:

SELECT 
   COUNT (*), EXTRACT(MONTH from current_date) as grpmonth
 FROM `mytable`
WHERE 
  test = 12
GROUP BY grpmonth
ORDER BY grpmonth;

0
投票

尝试这个查询-

选择提取(年份FROM(日期))AS年份,提取(月份FROM(日期))AS月份,SUM(销售额)AS每月销售额

FROM(数据库.表) 按年、月分组 按年、月排序

© www.soinside.com 2019 - 2024. All rights reserved.