select count(distinct `mail`) from ( select `mail`, `交易状态`, lead(`交易状态`,1,0) over(partiton by `mail`)as `下一次交易状态`,lead(`交易状态`,2,0) over(partition by `mail`)as `下下一次交易状态` from ( select `mail`, `交易状态`, row_number() over(partition by `mail` order by `交易时间`) from t ) where `交易状态` = '失败' and `下一次交易状态` = '失败' and `下下一次交易状态` = '失败' group by `mail` 先给表按消费者分人排序,再用lead函数给每个消费者当前的交易状态新增两列下一个交易以及下下个交易的状态,然后三个交易状态都为失败即符合要求,三次以上包含三次,所以没必要算,然后去重计数。

相关推荐

06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务