我有一张在日常级别销售的表
sales_day
loc_id day_id sales
124 2013-01-01 100
124 2013-01-02 120
124 2013-01-03 140
124 2013-01-04 160
124 2013-01-05 180
124 2013-01-06 200
124 2013-01-07 220
有每周表,它是所有日子的总和 loc_id week_id sales 123 201401 1120
现在我需要以上所有表格,如下所示
loc_id day_id sales week_sales
124 2013-01-01 100 1120
124 2013-01-02 120 1120
124 2013-01-03 140 1120
124 2013-01-04 160 1120
124 2013-01-05 180 1120
124 2013-01-06 200 1120
124 2013-01-07 220 1120
有太多的骚动,这么多周,几天。 如何在没有交叉连接的情况下准确获取数据。
答案 0 :(得分:0)
你试过这个:
select loc_id, day_id, sales, week_sales
from table
cross join (
select sum(sales) as week_sales from table
) t
答案 1 :(得分:0)
窗口分析功能应该可以帮到你......
select loc_id,
day_id,
sales,
sum(sales) over(partition by loc_id,date_part('week', day_id)) as week_total_sales
from <table name>
它会按地点ID和一年中的一周对销售额求和,以便为您提供所需的总数。
在您的示例中,2013-01-07包含在其他日期中,但实际上并不是同一日历周的一部分。
目前尚不清楚您指的是哪个DBMS。以上是Netezza。对于SQL Server等,尝试将date_part('week',day_id)更改为datepart(ww,day_id)。