postgresql 集合类型_PostgreSQL 强大的新联合类型

我们可以向这个渠道中填入带有更多lateral联合的中间步骤,来得到流程中我们需要重点改进的部分.[2] 让我们在查看主页和输入验证信息之间加入对使用示例步骤的查询.

SELECT

sum(view_homepage) AS viewed_homepage,

sum(use_demo) AS use_demo,

sum(enter_credit_card) AS entered_credit_card

FROM (

-- Get the first time each user viewed the homepage.

SELECT

user_id,

1 AS view_homepage,

min(time) AS view_homepage_time

FROM event

WHERE

data->>'type' = 'view_homepage'

GROUP BY user_id

) e1 LEFT JOIN LATERAL (

-- For each row, get the first time the user_id did the use_demo

-- event, if one exists within one week of view_homepage_time.

SELECT

user_id,

1 AS use_demo,

time AS use_demo_time

FROM event

WHERE

user_id = e1.user_id AND

data->>'type' = 'use_demo' AND

time BETWEEN view_homepage_time AND (view_homepage_time + 1000*60*60*24*7)

ORDER BY time

LIMIT 1

) e2 ON true LEFT JOIN LATERAL (

-- For each row, get the first time the user_id did the enter_credit_card

-- event, if one exists within one week of use_demo_time.

SELECT

1 AS enter_credit_card,

time AS enter_credit_card_time

FROM event

WHERE

user_id = e2.user_id AND

data->>'type' = 'enter_credit_card' AND

time BETWEEN use_demo_time AND (use_demo_time + 1000*60*60*24*7)

ORDER BY time

LIMIT 1

) e3 ON true

这样就会输出:

viewed_homepage | use_demo | entered_credit_card

-----------------+----------+---------------------

827 | 220 | 86

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值