按月的最后一天创建每月标签值
Create a Monthly Label value by last day of month
我有一个应用了
的数据集
row_num() partition by month order by day_date desc
我的结果是这样的,不限于——仅举个例子
Month Day User Active row_num
Jan-2021 2021-01-28 A yes 1
Jan-2021 2021-01-27 A yes 2
Jan-2021 2021-01-28 A yes 3
Feb-2021 2021-02-25 A no 1
Feb-2021 2021-02-15 A yes 2
Feb-2021 2021-02-01 A no 3
Jan-2021 2021-01-28 B yes 1
Jan-2021 2021-01-28 B yes 2
Jan-2021 2021-01-28 B yes 3
Feb-2021 2021-02-28 B no 1
Feb-2021 2021-02-08 B yes 2
我想添加的附件是,如果用户在他们的月末活跃,我想将月份标记为活跃。逻辑是 if row_num = 1 and active = yes, label full month, yes versa row_num = 1 and active = no label month_active = no.
我目前卡在如何将值应用于月份的分区,但在每日级别进行评估。提前欣赏一下。
Month Day User Active row_num month_active
Jan-2021 2021-01-28 A yes 1 yes
Jan-2021 2021-01-27 A yes 2 yes
Jan-2021 2021-01-28 A yes 3 yes
Feb-2021 2021-02-25 A no 1 no
Feb-2021 2021-02-15 A yes 2 no
Feb-2021 2021-02-01 A no 3 no
Jan-2021 2021-01-28 B yes 1 yes
Jan-2021 2021-01-28 B yes 2 yes
Jan-2021 2021-01-28 B yes 3 yes
Feb-2021 2021-02-28 B no 1 no
Feb-2021 2021-02-08 B yes 2 no
一种方法是使用 first_value()
:
select t.*,
first_value(active) over (partition by month order by day desc) as month_active
from t;
或者,如果您将查询用作子查询,则可以使用:
select t.*,
max(case when seqnum = 1 then active end) over (partition by month) as month_active
from t;
我有一个应用了
的数据集row_num() partition by month order by day_date desc
我的结果是这样的,不限于——仅举个例子
Month Day User Active row_num
Jan-2021 2021-01-28 A yes 1
Jan-2021 2021-01-27 A yes 2
Jan-2021 2021-01-28 A yes 3
Feb-2021 2021-02-25 A no 1
Feb-2021 2021-02-15 A yes 2
Feb-2021 2021-02-01 A no 3
Jan-2021 2021-01-28 B yes 1
Jan-2021 2021-01-28 B yes 2
Jan-2021 2021-01-28 B yes 3
Feb-2021 2021-02-28 B no 1
Feb-2021 2021-02-08 B yes 2
我想添加的附件是,如果用户在他们的月末活跃,我想将月份标记为活跃。逻辑是 if row_num = 1 and active = yes, label full month, yes versa row_num = 1 and active = no label month_active = no.
我目前卡在如何将值应用于月份的分区,但在每日级别进行评估。提前欣赏一下。
Month Day User Active row_num month_active
Jan-2021 2021-01-28 A yes 1 yes
Jan-2021 2021-01-27 A yes 2 yes
Jan-2021 2021-01-28 A yes 3 yes
Feb-2021 2021-02-25 A no 1 no
Feb-2021 2021-02-15 A yes 2 no
Feb-2021 2021-02-01 A no 3 no
Jan-2021 2021-01-28 B yes 1 yes
Jan-2021 2021-01-28 B yes 2 yes
Jan-2021 2021-01-28 B yes 3 yes
Feb-2021 2021-02-28 B no 1 no
Feb-2021 2021-02-08 B yes 2 no
一种方法是使用 first_value()
:
select t.*,
first_value(active) over (partition by month order by day desc) as month_active
from t;
或者,如果您将查询用作子查询,则可以使用:
select t.*,
max(case when seqnum = 1 then active end) over (partition by month) as month_active
from t;