首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在google-bigquery中跟踪12个月的聚合

在google-bigquery中跟踪12个月的聚合
EN

Stack Overflow用户
提问于 2013-08-09 22:20:51
回答 1查看 194关注 0票数 0

如何在WHERE子句中聚合一个12个月(TTM)的总用例语句?google-bigquery

这是我的问题。

代码语言:javascript
复制
SELECT
  clientid,
  clientname,
  year(revrecdate)*100 + month(revrecdate) as Period, *** NAMES the TTM period
  count(revrecdate) as Jobs,
  sum(profit) as Profits
FROM 
  oiafd.JobProfit
WHERE
  revrecdate >= '2010-12-01 00:00:00'
  and clientid = '2KOOLPDX'
  and CASE  WHEN month(revrecdate) = 1
            THEN(revrecdate <= timestamp(concat(string(year(revrecdate)),'-01-31')) and 
              revrecdate >= timestamp(concat(string(year(revrecdate)-1),'-02-01')))
            WHEN month(revrecdate) = 2
            THEN(revrecdate <= timestamp(concat(string(year(revrecdate)),'-02-28')) and 
              revrecdate >= timestamp(concat(string(year(revrecdate)-1),'-03-01')))
EN

回答 1

Stack Overflow用户

发布于 2013-08-27 02:57:09

要回答有关将CASE语句的概念转换为适用于BigQuery的内容的问题:您可以使用IF函数将每个CASE分解为WHERE中的单独子句。

像这样的东西将会起作用:

代码语言:javascript
复制
...
WHERE
  revrecdate >= '2010-12-01 00:00:00'
  and clientid = '2KOOLPDX'
  and IF(month(revrecdate) = 1,
         revrecdate <= timestamp(concat(string(year(revrecdate)),'-01-31')) and 
         revrecdate >= timestamp(concat(string(year(revrecdate)-1),'-02-01')),
         true)
  and IF(month(revrecdate) = 2,
         revrecdate <= timestamp(concat(string(year(revrecdate)),'-02-28')) and 
         revrecdate >= timestamp(concat(string(year(revrecdate)-1),'-03-01')),
         true)

有关IF()的详细信息,请参阅https://developers.google.com/bigquery/query-reference#otherfunctions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18148925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档