I';我试图用sql计算两年中两个相同日期之间的差异
我会尽量简单,把我的问题说清楚。我在BigQuery上有一个名为“fb_广告”的表格(关于美国不同商店的不同facebook公司),它包含以下列:I';我试图用sql计算两年中两个相同日期之间的差异,sql,google-bigquery,bigquery-standard-sql,Sql,Google Bigquery,Bigquery Standard Sql,我会尽量简单,把我的问题说清楚。我在BigQuery上有一个名为“fb_广告”的表格(关于美国不同商店的不同facebook公司),它包含以下列: 商店:商店名称 点击次数:点击次数 印象:广告的印象数 成本:广告成本 日期:AAAA-MM-DD 频率:商店的访客人数 所以,我试图计算2017年和2018年之间的差异 以下是我试图计算的方差: Variance_Of_Frequency = ((Frequency in 2018 at date X) - ((Frequency in 201
- 商店:商店名称
- 点击次数:点击次数
- 印象:广告的印象数
- 成本:广告成本
- 日期:AAAA-MM-DD
- 频率:商店的访客人数
Variance_Of_Frequency = ((Frequency in 2018 at date X) - ((Frequency in 2017 at date X))/((Frequency in 2017 at date X)
问题是,我必须将一周中的同一天与日期X进行比较
例如,如果我在2017年8月13日星期一有一个compaign跑步,我需要与2018年8月13日附近的另一个星期一进行比较(例如,可能是2018年8月15日的星期一)
这是每天的变化
我试着每周计算一次方差,但我不知道它是否正确,下面是我如何做到的:
首先,我使用以下查询将每日表聚合到每周表:
创建我的每周工作表
然后我尝试使用以下公式计算方差:
SELECT
base.*, (base.frequency-lw.frequency) / lw.frequency as VAR_FF
FROM
`weekly_table` base
JOIN (
SELECT
* EXCEPT (date),
DATE_ADD(DATE(TIMESTAMP(date)) , INTERVAL 1 Week)AS date
FROM
`weekly_table` ) lw
ON
base.date = lw.date
AND base.store= lw.store
有人知道如何做日常工作,或者我每周的询问是否正确吗
谢谢 对于给定日期,您希望知道下一年中与同一日期最近的星期一的日期
SET @dt = '2017-08-17';
SELECT CASE WHEN WEEKDAY(@dt + INTERVAL 1 YEAR) > 3
THEN ADDDATE(ADDDATE(@dt + INTERVAL 1 YEAR,INTERVAL 1 WEEK),INTERVAL - WEEKDAY(@dt + INTERVAL 1 YEAR) DAY)
ELSE ADDDATE(@dt + INTERVAL 1 YEAR,INTERVAL - WEEKDAY(@dt + INTERVAL 1 YEAR) DAY)
END x;
显然,我可以通过以这种方式定义@dt来删除所有这些
+间隔1年的位。对于给定的日期,您想知道下一年中最接近同一日期的星期一的日期
SET @dt = '2017-08-17';
SELECT CASE WHEN WEEKDAY(@dt + INTERVAL 1 YEAR) > 3
THEN ADDDATE(ADDDATE(@dt + INTERVAL 1 YEAR,INTERVAL 1 WEEK),INTERVAL - WEEKDAY(@dt + INTERVAL 1 YEAR) DAY)
ELSE ADDDATE(@dt + INTERVAL 1 YEAR,INTERVAL - WEEKDAY(@dt + INTERVAL 1 YEAR) DAY)
END x;
显然,我可以通过这样定义@dt来删除所有+间隔1年
位。如果您在日期添加(t1.DATE,INTERVAL 1 YEAR)=t2.DATE进行自加入和匹配,那么基于周的组是否能让您接近您想要的位置?不要把日期当作字符串,否则会出问题的。样本输入和输出数据将大有帮助。2017-08-13是一个星期五。2018-08-13是一个星期一:-(@草莓,我只是猜哈哈哈..只是为了说明我在寻找什么xD@danblack,我相信我的第二个问题是计算两周(一周和下一周)之间的差异(方差),而不是不同年份的两周:(!对第一个问题有什么提示吗?这里有一个看起来几乎相同的问题,但这家伙使用了两个不同的表,似乎对我不起作用!链接:对于您建议的解决方案,我相信增加一年不会给我们一周中的同一天!如果您在DATE\u ADD(t1.DATE,INTERVAL 1 year)上自行加入并匹配=t2.date
基于周的分组是否能让你接近你想要的位置?不要将日期视为字符串-有些事情会出错。样本输入和输出数据会有很大帮助。2017-08-13是星期五。2018-08-13是星期一:-(@草莓,我刚刚猜到了哈哈哈..只是为了说明我在找什么xD@danblack,我相信我的第二个问题是计算两周(一周和下一周)之间的差异(方差),而不是不同年份的两周:(!有关于第一个问题的任何提示吗?这里有一个看起来几乎相同的问题,但这家伙使用了两个不同的表,似乎对我不起作用!链接:对于你建议的解决方案,我相信增加一年不会给我们一周中的同一天!