栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何获得Redshift / Postgresql LAG窗口函数来有选择地排除记录?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获得Redshift / Postgresql LAG窗口函数来有选择地排除记录?

我想到的方法是针对单个记录,这些记录应标记为

TRUE
。考虑一下:

WITH cte AS (    SELECt *,        ROW_NUMBER() OVER (PARTITION BY phone ORDER BY ts) rn    FROM notifications n1    WHERe EXISTS (SELECt 1 FROM notifications n2 WHERe n1.phone = n2.phone AND       n2.ts < n1.ts AND n2.status = 'SUB' AND n2.result = 'SUCCESS') AND          n1.status = 'RENEWAL' AND n1.result = 'SUCCESS')SELECt n1.*,    CASE WHEN n2.rn = 1 THEN 'TRUE'         WHEN n2.rn > 1 THEN 'FALSE' END AS is_first_renewalFROM notifications n1LEFT JOIN cte n2    ON n1.phone = n2.phone AND n1.ts = n2.ts;

该查询似乎在下面给出的Postgres演示链接中有效。

演示版



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号