在窗口函数的情况下,有什么更好的方法可以为多行返回 1 个值? [英] Any better way to Return 1 value for multiple row in case when by window Function?

查看:46
本文介绍了在窗口函数的情况下,有什么更好的方法可以为多行返回 1 个值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这样的数据:

timestamp id  roas 
day 5     id1  1.3
day 4     id1  2.1
day 3     id1  1.9
day 2     id1  1.4
day 1     id1  3.0

我想在roas <时获取第一天的数据= 1.5 对于所有具有 'id1' 即 day 2 的行,所需结果:

I want to get data of the first day when roas < = 1.5 for all row have 'id1' that is day 2, desired result:

timestamp id  roas  min_date
day 5     id1  1.3  day 2
day 4     id1  2.1  day 2
day 3     id1  1.9  day 2
day 2     id1  1.4  day 2
day 1     id1  3.0  day 2

目前,我使用:

, t2 as (select *, case when roas < = 1.5 then timestamp else null end as day_roas from t1)
select *, min(day_roas) over (partition by id) as min_date
from t2 

推荐答案

您可以使用 FILTER 子句与您的窗口函数:

You can use a FILTER clause with your window function:

SELECT *, min(timestamp) FILTER (WHERE roas <= 1.5) OVER (PARTITION BY id) FROM t1

(在线演示)

这篇关于在窗口函数的情况下,有什么更好的方法可以为多行返回 1 个值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆