【问题标题】:Postgresql redshift version: retrieve sales amount at the end of each monthPostgresql redshift 版本:每月月底检索销售额
【发布时间】:2021-03-14 23:25:16
【问题描述】:

我有一个名为 sales_intake 的表格。每天都会在系统中记录一条记录,直到有人取消其会员资格。我使用的是 PostgreSQL redshift 8.0 版本,这意味着很多更新的版本还没有参与到这个版本中。

我正在尝试提取每个月底登录的最后一条记录/收入

表格如下所示:

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

我想要一个如下所示的表格:

 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

似乎没有任何效果。任何帮助将不胜感激

【问题讨论】:

    标签: sql datetime subquery amazon-redshift greatest-n-per-group


    【解决方案1】:

    你可以像这样使用窗口函数:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多