Postgresql redshift版:每月月底检索销售额
Postgresql redshift version: retrieve sales amount at the end of each month
我有以下 table 称为 sales_intake。每天都会在系统中记录一条记录,直到有人取消他们的会员资格。我使用的是 PostgreSQL redshift 8.0 版本,这意味着很多更新版本没有参与这个版本。
我正在尝试提取每个月底登录的最后一条记录/收入
table 看起来像这样:
Daily revenue
12/1/2020 00:00:00 50000
11/30/2020 00:00:00 47000
11/29/2020 00:00:00 45000
11/28/2020 00:00:00 42000
11/27/2020 00:00:00 39000
10/31/2020 00:00:00 25000
10/30/2020 00:00:00 22000
10/09/2020 00:00:00 19000
09/30/2020 00:00:00 16000
我想要一个看起来像这样的 table:
Daily revenue
11/30/2020 50000
10/31/2020 47000
09/30/2020 1600
我被告知最好使用 dateadd 可能更容易拉取它。
这是我尝试但没有成功的方法:
Select revenue
,max(daily)
from sales
group by day
我也试过:
select *
from(select daily, revenue
,row_number () over (partition by year(revenue), month(revenue) order by daily )t
from sales) as b
where t= 1
有人建议我这样做:
with E as
(
select *, row_number() over (partition by year([Date]), month([Date]) order by [Date] desc )
rn
from @sales
)
select [Date], [Revenue]
from E
where rn = 1
似乎没有任何效果。任何帮助将不胜感激
您可以像这样使用 window 函数:
select *
from (
select s.*,
row_number() over(partition by date_trunc('month', daily) order by daily desc) rn
from sales_intake s
) s
where rn = 1
我有以下 table 称为 sales_intake。每天都会在系统中记录一条记录,直到有人取消他们的会员资格。我使用的是 PostgreSQL redshift 8.0 版本,这意味着很多更新版本没有参与这个版本。
我正在尝试提取每个月底登录的最后一条记录/收入
table 看起来像这样:
Daily revenue
12/1/2020 00:00:00 50000
11/30/2020 00:00:00 47000
11/29/2020 00:00:00 45000
11/28/2020 00:00:00 42000
11/27/2020 00:00:00 39000
10/31/2020 00:00:00 25000
10/30/2020 00:00:00 22000
10/09/2020 00:00:00 19000
09/30/2020 00:00:00 16000
我想要一个看起来像这样的 table:
Daily revenue
11/30/2020 50000
10/31/2020 47000
09/30/2020 1600
我被告知最好使用 dateadd 可能更容易拉取它。
这是我尝试但没有成功的方法:
Select revenue
,max(daily)
from sales
group by day
我也试过:
select *
from(select daily, revenue
,row_number () over (partition by year(revenue), month(revenue) order by daily )t
from sales) as b
where t= 1
有人建议我这样做:
with E as
(
select *, row_number() over (partition by year([Date]), month([Date]) order by [Date] desc )
rn
from @sales
)
select [Date], [Revenue]
from E
where rn = 1
似乎没有任何效果。任何帮助将不胜感激
您可以像这样使用 window 函数:
select *
from (
select s.*,
row_number() over(partition by date_trunc('month', daily) order by daily desc) rn
from sales_intake s
) s
where rn = 1