Mysql 如何在谷歌大查询中求和月份?
我正在使用Google Big Query,并尝试对每个月的数据进行汇总(每天都会给出) 但它仍然显示每个月30行,这让我相信它不是对月份进行求和,而是一个数据一个数据给我。我会使用TRUNC函数吗?问题是这个数据集中日期的列标签是date,所以如果date既是一个列名又是一个变量,我不知道如何TRUNC(MONTH as date) 感谢您的帮助 谢谢,,Mysql 如何在谷歌大查询中求和月份?,mysql,sql,google-bigquery,Mysql,Sql,Google Bigquery,我正在使用Google Big Query,并尝试对每个月的数据进行汇总(每天都会给出) 但它仍然显示每个月30行,这让我相信它不是对月份进行求和,而是一个数据一个数据给我。我会使用TRUNC函数吗?问题是这个数据集中日期的列标签是date,所以如果date既是一个列名又是一个变量,我不知道如何TRUNC(MONTH as date) 感谢您的帮助 谢谢,, Yoni首先,我建议缩短日期。然后: SELECT date_trunc(date, month) as month, region_na
Yoni首先,我建议缩短日期。然后:
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;
查询的问题是,您正在按日期进行聚合。您可以通过按月聚合来修复它;我认为完整的日期更安全——尽管新冠病毒数据已经整整一年没有存在了,所以现在,你不必担心不同年份的月份数据。MySQL与BigQuery不同,你的问题是,
groupby
是按日期分组的,而不是按月份分组的。尝试按摘录分组(从日期算起的月份)
以保持一致。@yonikasz,我已经测试了Gordon的解决方案,它回答了您的问题。请考虑他的回答,这有助于其他社区成员在面对同样的问题时找到答案。
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;