Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >统计用户购买前的访问次数。(每次购买后应重置计数)在Presto中

统计用户购买前的访问次数。(每次购买后应重置计数)在Presto中
EN

Stack Overflow用户
提问于 2022-04-13 16:49:02
回答 2查看 59关注 0票数 0

我有一个事件表,其中记录的行动,客户采取在我们的网站。我想知道一个顾客在最后购买一件商品之前拜访了多少次。

上表将聚合为

在第一周,顾客1进行了3次访问(包括他购买的那次访问)。他又在同一周的另一次拜访中买了一件东西。所以你可以在第一种情况下看到3,在第二种情况下看到1。也就是说,每次用户进行购买时,计数都应该重置。

我想出的解决方案非常混乱,速度慢(涉及多个连接和3个windows函数),在某些情况下不起作用。我漏掉了一些数据。

如果有人能在正确的方向上帮助我处理这个场景,那就太好了。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2022-04-13 18:11:11

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WITH
-- your input, don't use in final query
visits(wk,visit_id,cust_id,has_purchased) AS (
            SELECT 1,1,1,FALSE
  UNION ALL SELECT 1,2,1,FALSE
  UNION ALL SELECT 1,3,1,TRUE
  UNION ALL SELECT 1,2,1,TRUE
)
-- real query starts here, replace following comma with "WITH"
,
with_counter AS (
  SELECT
    *
  , LAG(CASE WHEN has_purchased THEN 1 ELSE 0 END,1,0)
    OVER(PARTITION BY wk,cust_id ORDER BY visit_id)  AS grp_end
   FROM visits
)
SELECT
  wk
, cust_id
, grp_end
, COUNT(*) AS visits_before_purchase
FROM with_counter
GROUP BY
  wk
, cust_id
, grp_end
;
-- out  wk | cust_id | grp_end | visits_before_purchase 
-- out ----+---------+---------+------------------------
-- out   1 |       1 |       0 |                      3
-- out   1 |       1 |       1 |                      1
票数 0
EN

Stack Overflow用户

发布于 2022-04-13 18:47:48

我假设每一次客户访问,他们的访问id将增加1次。因此,我只是取不同的访问身份给每个客户,以了解他们在购买东西之前进行了多少次访问。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT weeks, visit_id, customer_id, purchase_flag, 
CASE WHEN diff IS null then visit_id else diff 
end
FROM (
    SELECT *, visit_id - LAG(visit_id) over (partition by customer_id  order by 
    customer_id, visit_id)as diff 
    FROM customer 
    WHERE purchase_flag = 1
   ) as t ORDER BY customer_id, visit_id 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71865259

复制
相关文章
[Go] golang中接口值(interface)的比较
当写项目的过程中 , 有时候进行逻辑判断 , 如果没注意对两个interface类型的变量进行比较 , 会造成混乱问题
唯一Chat
2021/01/21
3.8K0
AngularJS API之equal比较对象
使用情况 1 首先,所有满足 a === 3 这种的对象,在angular.equals(a,b)中都会返回真 2 所有对象的类型,以及属性值都相同的,也会返回真 3 NaN和NaN也会返回真(在javascript中,返回的是假) 4 正则也会返回真(在javascirpt,/abc/ /abc/被认为是不相等的) 样例 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <
用户1154259
2018/01/17
6980
如何对矩阵中的所有值进行比较?
需求相对比较明确,就是在矩阵中显示的值,需要进行整体比较,而不是单个字段值直接进行的比较。如图1所示,确认矩阵中最大值或者最小值。
逍遥之
2020/05/14
7.7K0
关于Java中的整数类型值比较的疑问
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/164
joshua317
2021/10/19
1.1K0
AngularJS 中的 controllerAs
Controller 在 AngularJS 应用中可以说是无处不在, 可以在 html 中通过 ngController 指令来指定 Controller , 语法为:
beginor
2020/08/10
8900
JavaScript框架比较:AngularJS vs ReactJS vs EmberJS
选择最适合项目需求的JavaScript框架,可以提高你发布有竞争力的web app的能力。 最后,你对基于JavaScript的app或网站找到了一条奇妙的思路。选择正确的框架可能对你项目的成功有着
前朝楚水
2018/04/03
12.7K0
JavaScript框架比较:AngularJS vs ReactJS vs EmberJS
AngularJS与服务器端MVC比较
这是一篇讨论客户端MVC和服务器端MVC的比较文章。 首先分离关注是架构设计的一个基本原则,多层架构中:数据存储 服务层 API层和表现层各层之间应该最小依赖,服务层只需要知道在哪里存储数据,API只需要知道哪个服务被调用,而表现层主要是通过REST和API通讯。多层之间只能单向依赖,比如API不能知道是谁调用它,它不能依赖于表现层。(可见:干净的架构) 在真实情况下各层情况比较复杂,但是分离关注在随着机器和设备(laptop, mobile, tablet, desktop)增加越发重要,后端应该只提
前朝楚水
2018/04/02
2K0
AngularJS与服务器端MVC比较
整型包装类值的比较
当使用自动装箱方式创建一个Integer对象时,当数值在-128 ~127时,会将创建的 Integer 对象缓存起来,当下次再出现该数值时,直接从缓存中取出对应的Integer对象。所以上述代码中,x和y引用的是相同的Integer对象。
黑洞代码
2021/01/14
1.2K0
关于 Integer 值比较的问题
今天刚好遇到这样的问题,别的不说,先上代码 public class TestInteger { public static void main(final String[] args) { final Integer a = 500; final Integer b = 500; final Integer c = 100; final Integer d = 100; System.out.println("a=b
Dato
2018/04/17
1.2K0
java Integer值比较
所有相同类型的包装类对象之间的值比较,应该使用equals方法比较。 –来自阿里巴巴java开发手册。 先看个简单实例: public static void main(String[] args)throws Exception{ Integer a = -121; Integer b = -121; Integer c = 345; Integer d = 345; System.out.println(a
IT云清
2019/01/22
1.8K0
Java中int和Integer值之间相互比较
请同时参考文章https://www.joshua317.com/article/200
joshua317
2021/11/30
6090
Java中int和Integer值之间相互比较
[Go] golang中接口值(interface)与nil比较或指针类型之间比较的注意问题
注意问题 , 当对interface变量进行判断是否为nil时 , 只有当动态类型和动态值都是nil , 这个变量才是nil
唯一Chat
2021/01/21
1.9K0
整型包装类值的比较
当使用自动装箱方式创建一个Integer对象时,当数值在-128 ~127时,会将创建的 Integer 对象缓存起来,
Vincent-yuan
2021/03/12
9760
AngularJS中的按需加载ocLazyLoad
初学者,有不足的地方希望各位指出 一、前言     ocLoayLoad是AngularJS的模块按需加载器。一般在小型项目里,首次加载页面就下载好所有的资源没有什么大问题。但是当我们的网站渐渐庞大起来,这样子的加载策略让网速初始化速度变得越来越慢,用户体验不好。二来,分模块加载易于团队协作,减低代码冲突。   二、按需加载的对象 各个Controller模块、Directive模块、Server模块、template模板,其实这些都是一些 .js文件或者 .html文件 。     三 、按需加载的场
庞小明
2018/03/07
1.7K0
【AngularJS】 # AngularJS入门
ng-app 指令定义一个 AngularJS 应用程序。 若不声明,将直接显示表达式。
全栈程序员站长
2022/09/15
23.2K0
【AngularJS】 # AngularJS入门
[原创]Windows中VS code无法查看C++ STL容器的值
1 Windows中VS code debug时无法查看C++ STL容器内容
极客中心
2021/02/25
1.7K0
AngularJS 中的 factory、 service 和 provider
初学 AngularJS 时, 肯定会对其提供 factory 、 service 和 provider 感到疑惑, 这三种都是提供服务的方式, 他们到底有什么区别呢?
beginor
2020/08/06
7970
angularjs子组件向父组件传值_react子组件传值
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/03
1.9K0
AngularJS 中的Promise --- $q服务详解
先说说什么是Promise,什么是$q吧。Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered。 什么是Promise 以前了解过Ajax的都能体会到回调的痛苦,同步的代码很容易调试,但是异步回调的代码,会让开发者陷入泥潭,无法跟踪,比如: funA(arg1,arg2,function(){ funcB(arg1,arg2,function(){ funcC(arg1,arg2,function(){
用户1154259
2018/01/17
1.5K0
angularjs中设置select的选中项
最近用angularjs比较多,里面有很多自己的方法,都不咋会用,这篇只是个笔记,防止自己忘记
庞小明
2019/07/08
3.2K0

相似问题

ngSelected不更新ngModel [AngularJS]

29

如何比较Angularjs中的值?

31

jstl中的angularjs值比较问题

13

angularjs比较行值

12

如何从数组属性Angularjs中将html输入设置为ngSelected

112
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文