I have 2 tables:
sessions: This table contains all the sessions that users have had. It contains 3 columns. uuid, user_id, occurred_at
purchases: This table contains all the purchases a user has made. It contains 3 columns: purchase_id, user_id, purchased_at
The question: For each session, find the number purchases the user had already made at the time of the session
pseudo code:
for session in sessions:
current_session_user_id = session["user_id"]
current_session_timestamp = session["occurred_at"]
num_purchases_made_at_the_time = query(
SELECT count(*) FROM purchases
WHERE
purchases.user_id = current_session_user_id
AND purchases.purchased_at < current_session_timestamp
)
Note: Non-equality correlated subquery expression is not supported in my database (vertica)
Some ideas because I am not able to use correlated subquery:
- Write a CTE that indexes when each order count occurred for each user and then join. ()