bigquery sql将两个日期值之间的差值保持为7天

woobm2wo  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(430)

我的bigquery中有两个日期参数,一个是第一次打开日期(first\u open),另一个是获取值的日期(date)。我需要找到一组用户(id)谁在一个特定的日期和他们的值只开放了7天,而不是更多。
如。
6月20日(首次开放)用户只能在6月20日(日期)之前
2月20日(首次开放)用户只能在6月20日(日期)之前使用
2010年6月7日(首次开放)用户只能在2010年6月13日(日期)前使用

SELECT
  event_name,
  COUNT(DISTINCT id) uniques,
  COUNT(id) as total
FROM
  `x-12.analytics_7.xyz`
WHERE
  (first_open between "2020-06-01" and "2020-06-07") 
  AND (date BETWEEN "20200601" AND "20200613")
  AND event_names in ("app_open","first_open")
  AND platform = "ANDROID"     

GROUP BY
  event_names

从我使用的查询中可以看到,我将用户的开放时间限制为7天,但不能将其值限制为7天。

brvekthn

brvekthn1#

根据你的描述,你可以用 COUNTIF() :

SELECT event_name, COUNT(DISTINCT id) uniques, COUNT(id) as total,
       COUNTIF(date <= DATE_ADD(first_open, interval 7 day))
FROM `x-12.analytics_7.xyz`
WHERE first_open between '2020-06-01' and '2020-06-07' and
      date BETWEEN '2020-06-01' AND '2020-06-13- and
      event_names in ('app_open', 'first_open') and
      platform = 'ANDROID'   
GROUP BY event_names;

或者,你可以把逻辑放在 WHERE 条款:

WHERE first_open between '2020-06-01' and '2020-06-07' and
      date >= first_open and
      date < date_add(first_open, interval 7 day) and
      event_names in ('app_open', 'first_open') and
      platform = 'ANDROID'

相关问题