sql - 为用户提取多个日期条目
问题描述
我有一个表,标题示例:userid、product、product2、activation_day、deactivation_day
我如何提取所有用户,比如说,他们有不同的activation_days 和不同的deactivation_days。因为该用户激活了他的产品,假设在 21012021 上,然后在 21032021 上停用他的产品,然后它回来并在 01052021 上激活他的产品,现在它是一个活跃的客户。所以对他来说 deactivation_day 是 31122099。
基本上我想要以下输出:
userid, product, product2, activation_day, deactivation_day
1xx1 aa aa2 21012021 21032021
1xx1 aa aa2 01052021 31122099
解决方案
我怀疑您真正要求的是拥有相同两种产品但在时间段上有差距的用户。
假设您的日期实际上存储为日期,一种方法使用exists
:
select t.*
from t
where exists (select 1
from t t2
where t2.userid = t.userid and
t2.product = t.product and
t2.product2 = t.product2 and
(t2.activation_day > t.deactivation_day or
t2.deactivation_day < t.activation_day
);
推荐阅读
- python - 验证数据的形状应该是什么?
- mysql - select where left between - MySQL 查询到 SQLite 查询
- java - 类构造函数中的 ArrayList 字段
- python - 通过类的名称访问类的属性与类方法有什么区别?
- linux - int 0x21 和 int 0x80 有什么区别?
- c++ - Valgrind 在 cpputest TEST() 宏中显示内存泄漏
- javascript - 如何防止aggrid中的onselectionchanged方法多次停止执行?
- python - 我正在使用 seaborn 并有一个热图。如何使用离散范围内的特定颜色创建颜色图?
- html - Django CSS HTML 不适用
- python - 通过 Python 使用没有 Oauth2 的 Youtube Analytics API?