大佬教程收集整理的这篇文章主要介绍了获取 FIRST_VALUE 和 LAST_VALUE 之间的范围,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
时间戳 | ID | 范围 |
---|---|---|
2021-01-23 12:52:34.159999 UTC | 1 | enter_page |
2021-01-23 12:53:02.342 UTC | 1 | vIEw_product |
2021-01-23 12:53:02.675 UTC | 1 | 结帐 |
2021-01-23 12:53:04.342 UTC | 1 | search_page |
2021-01-23 12:53:24.513 UTC | 1 | 结帐 |
我正在尝试使用 windows/ANALYTICAL 函数获取列“范围”中 FirsT_VALUE 和 LAST VALUE 之间的所有值
我已经得到了 first_value() = enter_page
和 last_value() == 结帐
在 SQLite 中使用 windows 函数
FirsT_VALUE(scopE) OVER ( PARTITION BY ID ORDER BY julianday(timestamp) ASC) first_page
FirsT_VALUE(scopE) OVER ( PARTITION BY ID ORDER BY julianday(timestamp) DESC ) last_page
我正在尝试捕获 [不包括边] 之间的所有步骤:vIEw_product、apartment_vIEw、checkout[,N-fIEld] 稍后将它们添加到字符串中(唯一值 -STR_AGGR())
完成此操作后,我将在稍后处理尝试查找客户是否在购买过程中的某个时间点多次打开结帐
我的结果应该像
附言我试图避免使用 python 来处理这个。我想要一种“干净”的方式来使用 sql-pure
非常感谢大家
嗯。 . .我在想:
SELEct id,GROUP_CONCAt(scope,',')
from (select t.*,row_number() over (partition by id order by timestamp) as seqnum_asc,row_number() over (partition by id order by timestamp desc) as seqnum_desc
from t
order by id,timestamp
) t
where 1 not in (seqnum_asc,seqnum_desc)
group by id;
在 SQLite 中,GROUP_CONCAt()
不接受 order by
参数。我的理解是它尊重子查询的排序,这就是子查询具有 order by
的原因。
您可以使用支持 GROUP_CONCAT()
子句的 ORDER BY
窗口函数来做到这一点,因此您将以正确的顺序在 scope
中使用 inbetween_pages
,而不是 {{ 1}} 不支持 GROUP_CONCAT()
子句的聚合函数,并且它返回的结果不能保证按特定顺序排列:
ORDER BY
参见demo。
结果:
以上是大佬教程为你收集整理的获取 FIRST_VALUE 和 LAST_VALUE 之间的范围全部内容,希望文章能够帮你解决获取 FIRST_VALUE 和 LAST_VALUE 之间的范围所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。