Postgres简单的流失/保留
我正在尝试创建一个简单的用户保留率,我尝试了很多搜索方式,但是它们似乎都没有高效,并且大多数都有很多我真正不需要的计算。
输入 我的桌子示例: https://dbfiddle.uk/?rdbms = postgres_14&; fiddle = ec68bebf63280023e828ebbb6cabd2d89 或:
DROP TABLE IF EXISTS users_churn;
create table
users_churn(
id SERIAL PRIMARY KEY,
users varchar(10) not null,
dates timestamp
);
insert into users_churn(users, dates)
values
('1ab7', '2022-01-04 10:22'),
('1ab7', '2022-04-26 18:30'),
('1ab7', '2022-05-12 20:10'),
('1ab7', '2022-07-02 20:55'),
('3ac5', '2022-02-05 05:12'),
('3ac5', '2022-04-09 07:17'),
('3ac5', '2022-07-03 04:19');
select * from users_churn
我期望的输出:
+-------------------------------------------------+
| --DESIRED OUTPUT |
+-------------------------------------------------+
| ('1ab7', '2022-01-04 10:22', 'first_purchase'), |
| ('1ab7', '2022-02-01 00:00', 'churn'), |
| ('1ab7', '2022-03-01 00:00', 'churn'), |
| ('1ab7', '2022-04-26 18:30', 'retained'), |
| ('1ab7', '2022-05-12 20:10', 'retained'), |
| ('1ab7', '2022-06-01 00:00', 'churn'), |
| ('1ab7', '2022-07-02 20:55', 'retained'), |
| ('3ac5', '2022-02-05 05:12', 'first_purchase'), |
| ('3ac5', '2022-03-01 00:00', 'churn'), |
| ('3ac5', '2022-04-09 07:17', 'retained'), |
| ('3ac5', '2022-05-01 00:00', 'churn'), |
| ('3ac5', '2022-06-01 00:00', 'churn'), |
| ('3ac5', '2022-07-03 04:19', 'retained'); |
+-------------------------------------------------+
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果用户一个月内购买更多购买,您想做什么。此版本仅保留第一个版本。如果要保留所有购买,请摆脱
rn_month
stuck:db<> fiddle 此处
It's not clear what you want done if there is more that one purchase by a user in a month. This version keeps only the first one. If you want to keep all purchases, then get rid of the
rn_month
stuff:db<>fiddle here