首页 > 解决方案 > 如何在 Google Big Query 中总结月份?

问题描述

我正在使用谷歌大查询,我试图总结每个月的数据(每天给出)。

SELECT sum(EXTRACT(MONTH FROM date)) as month, region_name, avg(stringency_index) as stringency_index, sum(deaths) as deaths FROM `bigquery-public-data.covid19_govt_response.oxford_policy_tracker`
WHERE (stringency_index is not null) and (region_name = "New York" OR region_name = "Florida") AND (date BETWEEN '2020-05-01' AND '2020-12-30')
GROUP BY region_name, date
ORDER BY EXTRACT(MONTH FROM date);

但它仍然每个月显示 30 多行,让我相信它不是对月份求和,但仍然按数据向我提供数据。我会使用 TRUNC 函数吗?问题是这个数据集中日期的列标签是日期,所以如果日期既是列名又是变量,我不知道如何 TRUNC(MONTH as date)。

任何帮助表示赞赏。

谢谢你,约尼

标签: mysqlsqlgoogle-bigquery

解决方案


首先,我建议截断日期。然后:

SELECT date_trunc(date, month) as month, region_name, 
       avg(stringency_index) as stringency_index,
       sum(deaths) as deaths
FROM `bigquery-public-data.covid19_govt_response.oxford_policy_tracker`
WHERE stringency_index is not null and 
      region_name IN ('New York', 'Florida') AND
       date BETWEEN '2020-05-01' AND '2020-12-30'
GROUP BY region_name, month
ORDER BY month;

您的查询的问题是您正在汇总date. 您可以通过按月汇总来修复它;我认为完整的日期更安全——尽管 COVID 数据尚未存在一整年,所以现在,您不必担心不同年份的几个月的数据。


推荐阅读