我有一个查询,其中我从一个列中求和值,其中的日期=昨天(current_date - 1):
SELECT sum(col) as sumCol
from `project.dataset.table`
where date = date_sub(current_date, interval 1 day)我想要实现的是计算上述结果与前一天相同查询结果之间的差异,即date = date_sub(current_date,间隔2天)。
我不知道如何在查询中创建此计算。我可以将上面的内容与前一天的相同查询结合起来,但很明显,这给了我每天一行的时间,而不是计算和间隔1天--间隔2天?
如果你能帮我指出正确的方向,我将不胜感激。
谢谢
发布于 2018-10-03 15:02:53
那么,您可以使用条件聚合:
select sum(case when date = date_sub(current_date, interval 1 day) then col else - col end) as diff
from `project.dataset.table`
where date in ( date_sub(current_date, interval 1 day), date_sub(current_date, interval 2 day) )编辑:
更一般地,您可以使用条件聚合获得这两个值:
select sum(case when date = date_sub(current_date, interval 1 day) then col end) as yesterday,
sum(case when date = date_sub(current_date, interval 2 day) then col end) as day_before
from `project.dataset.table`
where date in ( date_sub(current_date, interval 1 day), date_sub(current_date, interval 2 day) )然后,您可以根据需要将这些列组合起来。如果一个值丢失了,它将是NULL,所以您可以安全地进行除法和丢失值。
发布于 2018-10-03 15:00:54
你有没有发现下面的情况
SELECT
( sum(col) as sumCol
from `project.dataset.table`
where date = date_sub(current_date, interval 1 day)
)-( sum(col) as sumCol
from `project.dataset.table`
where date = date_sub(current_date, interval 2 day)
) from project.dataset.tablehttps://stackoverflow.com/questions/52629940
复制相似问题