作为一个简化的场景,假设我有以下表格:
交易视图:
user_id | viewed_at | more attributes ...
------------------------------
1 | 2020-07-12 15:00:00 | ...
1 | 2020-07-12 14:00:00 | ...
1 | 2020-07-12 13:00:00 | ...
1 | 2020-07-03 09:00:00 | ...
2 | 2020-07-12 15:00:00 | ...
2 | 2020-07-12 14:00:00 | ...
2 | 2020-07-12 13:00:00 | ...
3 | 2020-07-12 15:00:00 | ...
购买:
user_id | purchased_at | more attributes ...
------------------------------
1 | 2020-07-03 09:02:10 | ...
1 | 2020-07-12 14:04:53 | ...
2 | 2020-07-12 15:20:12 | ...
(并非所有浏览交易的用户都会购买;一些用户在购买前会多次查看交易;一些用户会进行多次购买。每个购买的用户必须至少查看过一次交易;可能就在购买之前!)
我要的是精选的 deal_views
(包括一些附加属性;为简单起见,上面省略了)为每个用户在购买前最近发生的。这里的动机是可见的交易随着时间的推移而改变,所以我们想知道“最近在购买之前,交易的状态如何?”。
因此,对于上述数据,这将是:
user_id | viewed_at | more attributes ...
------------------------------
1 | 2020-07-03 09:00:00 | ...
1 | 2020-07-11 14:00:00 | ...
2 | 2020-07-11 15:00:00 | ...
sql性能会很好,但这不是一个大问题(只要它是可运行的!)因为这只是我希望执行的一次性查询。结果表中应该有大约200000行。
2条答案
按热度按时间epfja78i1#
雪花支持横向连接,因此可以执行以下操作:
你也可以
row_number()
:up9lanfz2#
(免责声明:我没有雪花,所以我没有尝试或测试。我在mssql上进行了测试。)
输出:
db小提琴演示
如果您需要来自deal\u视图的其他属性,请将其与deal视图连接起来。