GBQ SQL如何提取整数型日期部分 实现按年/月统计营收总额
Google BigQuery 按年月统计营收解决方案
你存储日期的int字段格式为YYYYMMDD,可以通过以下两种方式快速实现批量按年、月维度聚合营收,无需每月调整查询条件:
方法1:直接用数值运算提取年月(性能最优)
利用数值计算直接截取对应位数,无需类型转换,查询速度最快:
SELECT DIV(date, 10000) AS year, -- 除以10000取整得到前4位年份 MOD(DIV(date, 100), 100) AS month, -- 先除以100取整得到前6位,再对100取模得到2位月份 SUM(revenue) AS total_revenue FROM revenue.table GROUP BY year, month ORDER BY year DESC, month DESC -- 按时间倒序排列,可根据需要调整
如果需要过滤特定时间范围,只需在WHERE子句中添加对应条件即可,比如统计2020-2022年的数据:
WHERE date BETWEEN 20200101 AND 20221231
方法2:转换为日期类型后提取(兼容性更强)
如果后续需要做更多日期相关运算(比如按周、季度统计,或者计算日期差),可以先将int类型的日期转换为标准DATE类型再操作:
SELECT EXTRACT(YEAR FROM PARSE_DATE('%Y%m%d', CAST(date AS STRING))) AS year, EXTRACT(MONTH FROM PARSE_DATE('%Y%m%d', CAST(date AS STRING))) AS month, SUM(revenue) AS total_revenue FROM revenue.table GROUP BY year, month ORDER BY year DESC, month DESC
如果需要输出YYYY-MM格式的年月字符串,可以调整SELECT部分:
FORMAT_DATE('%Y-%m', PARSE_DATE('%Y%m%d', CAST(date AS STRING))) AS year_month
内容的提问来源于stack exchange,提问作者MatmataHi
相关产品推荐
相关产品推荐

