我有一个按周分组的销售表。我想编写一个查询,以创建一个新表,以给出有问题的一周的销售量以及去年该时间以来该产品的销售量,但是我的尝试要么给出了该“去年同期”(TTLY)的空白单元格值或重复项。
我尝试编写一个子查询,该子查询需要日期,减去52周并显示该周的值,然后将该子查询加入我的主查询中。
但是,该子查询无法正常工作:该查询正确显示了一年前的日期,但随后没有拉出该TTLY周(仅当前一周)的销售记录。
with ttyl as
(select
date::date as date,
(sales.date - interval '52 weeks') as date_ttly,
ID,
value
from sales
where country = 'uk' and date > '2019-08-01' and ID = '12345678')
在此示例中,子查询在date_ttly列中生成上一年的日期,但在value列中提取2019年数据。
所有WHERE条件都是临时性的,以便使查询的构建更加容易。
谢谢!
答案 0 :(得分:1)
假设仅按date
和按country
分组销售,则在同一表上的联接应该起作用:
SELECT sales1.id,
sales1.date,
sales1.value,
sales2.date,
sales2.value
FROM sales AS sales1
JOIN sales AS sales2 ON sales1.date - interval '52 weeks' = sales2.date
AND sales1.country = sales2.country
但是,这还假设您的date
始终是一周的同一天,例如星期一。