我已经有一段时间没碰运气了。我有一张像下面这样的桌子。我正在尝试在每个用户获得第一个文本值之前获得col值。我在蜂巢里。
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产出应是:
user col
1 15
2 10发布于 2018-05-16 18:01:39
使用窗口函数:
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;https://stackoverflow.com/questions/50377209
复制相似问题