首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Hive SQL中选择prev值

在Hive SQL中选择prev值
EN

Stack Overflow用户
提问于 2018-05-16 17:51:06
回答 1查看 60关注 0票数 2

我已经有一段时间没碰运气了。我有一张像下面这样的桌子。我正在尝试在每个用户获得第一个文本值之前获得col值。我在蜂巢里。

代码语言:javascript
复制
user    ts            col      isnumber
1       1473811200    5         y
1       1473811205    10        y
1       1473811207    15        y
1       1473811212    text1     n
1       1473811215    text2     n
1       1473811225    30        y
2       1473811201    10        y
2       1473811205    text3     n
2       1473811207    20        y
2       1473811210    30        y

产出应是:

代码语言:javascript
复制
user    col
1       15
2       10
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-16 18:01:39

使用窗口函数:

代码语言:javascript
复制
SELECT user_, prev
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY user_ ORDER BY ts) AS rn
      FROM (SELECT *, CASE 
                WHEN isnumber = 'y' THEN NULL
                WHEN LAG(isnumber,1) OVER(PARTITION BY user_ ORDER BY ts) = 'y'
                     THEN LAG(col,1) OVER(PARTITION BY user_ ORDER BY ts)
               END AS prev
             FROM tab) sub
    WHERE prev IS NOT NULL) sub2
WHERE rn = 1;

DBFiddle演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50377209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档