File: ex15.sql

package info (click to toggle)
pgformatter 5.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,964 kB
  • sloc: sql: 186,493; perl: 5,694; makefile: 2; sh: 1
file content (34 lines) | stat: -rw-r--r-- 905 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
SELECT
    user_id,
    view_homepage,
    view_homepage_time,
    enter_credit_card,
    enter_credit_card_time
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 enter_credit_card
        -- event, if one exists within two weeks of view_homepage_time.
    SELECT
        1 AS enter_credit_card,
        time AS enter_credit_card_time
    FROM
        event
    WHERE
        user_id = e1.user_id
        AND data ->> 'type' = 'enter_credit_card'
        AND time BETWEEN view_homepage_time
        AND (view_homepage_time + 1000 * 60 * 60 * 24 * 14)
    ORDER BY
        time
    LIMIT 1)
    e2 ON TRUE;