

StreamWave tracks user activity across web and mobile sessions. Write a PostgreSQL query to return each active user's first and last event based on event timestamp.
status is 'active'.event_id for the first event and the larger event_id for the last event.user_id.users| column | type | description |
|---|---|---|
| user_id | INT | Primary key for the user |
| full_name | VARCHAR(100) | User name |
| status | VARCHAR(20) | Account status |
| signup_date | DATE | Date the user signed up |
platforms| column | type | description |
|---|---|---|
| platform_id | INT | Primary key for platform |
| platform_name | VARCHAR(50) | Platform name |
events| column | type | description |
|---|---|---|
| event_id | INT | Primary key for event |
| user_id | INT | User who generated the event |
| platform_id | INT | Platform where the event occurred |
| event_type | VARCHAR(50) | Event name |
| event_time | TIMESTAMP | Event timestamp |
Representative rows are included below in the dataset. Some users have no events, some events have NULL platforms, and some users have multiple events at the same timestamp.
| user_id | full_name | first_event_type | first_event_time | last_event_type | last_event_time |
|---|---|---|---|---|---|
| 1 | Ava Chen | login | 2024-02-01 09:00:00 | purchase | 2024-02-03 18:30:00 |
| 2 | Ben Ortiz | login | 2024-02-01 08:00:00 | logout | 2024-02-01 08:00:00 |
| 4 | Diego Park | NULL | NULL | NULL | NULL |
| 5 | Ella Singh | login | 2024-02-10 07:45:00 | support_ticket | 2024-02-11 16:00:00 |
| 7 | Grace Kim | login | 2024-02-15 12:00:00 | login | 2024-02-15 12:00:00 |
| Column | Type | Description |
|---|---|---|
| user_idPK | INT | Primary key for the user |
| full_name | VARCHAR(100) | User full name |
| status | VARCHAR(20) | Account status such as active, inactive, or banned |
| signup_date | DATE | Date the user signed up |
| Column | Type | Description |
|---|---|---|
| platform_idPK | INT | Primary key for the platform |
| platform_name | VARCHAR(50) | Platform name such as web or ios |
| Column | Type | Description |
|---|---|---|
| event_idPK | INT | Primary key for the event |
| user_id | INT | User who generated the event |
| platform_id | INT | Platform where the event occurred |
| event_type | VARCHAR(50) | Type of event |
| event_time | TIMESTAMP | Timestamp when the event occurred |
| user_id | full_name | status | signup_date |
|---|---|---|---|
| 5 | Ella Singh | active | 2024-02-01 |
| 2 | Ben Ortiz | active | 2024-01-20 |
| 6 | Farah Ali | inactive | 2024-02-05 |
| 1 | Ava Chen | active | 2024-01-15 |
| 4 | Diego Park | active | |
| 3 | Cara Lopez | banned | 2024-01-25 |
| 7 | Grace Kim | active | 2024-02-12 |
| 8 | Hugo Reed | inactive | 2024-02-14 |
| 1 | Ella Singh | active | 2024-02-14 |
| 2 | Cara Lopez | active | 2024-02-16 |
| 3 | Grace Kim | inactive | 2024-01-18 |
| 4 | Hugo Reed | active | 2024-01-14 |
| 5 | Ben Ortiz | active | 2024-02-15 |
| 6 | Ella Singh | inactive | 2024-01-21 |
| 7 | Farah Ali | active | 2024-02-02 |
| 8 | Cara Lopez | active | 2024-02-14 |
| 9 | Hugo Reed | inactive | 2024-01-19 |
| 10 | Hugo Reed | banned | 2024-02-15 |
| 11 | Cara Lopez | inactive | 2024-01-14 |
| 12 | Ben Ortiz | active | 2024-01-15 |
| 13 | Ben Ortiz | inactive | 2024-01-31 |
| 14 | Ava Chen | active | 2024-02-03 |
| 15 | Cara Lopez | active | 2024-01-17 |
| 16 | Ava Chen | inactive | 2024-01-25 |
| 17 | Diego Park | active | 2024-02-09 |
| 18 | Diego Park | inactive | 2024-01-25 |
| event_id | user_id | platform_id | event_type | event_time |
|---|---|---|---|---|
| 108 | 5 | 2 | support_ticket | 2024-02-11 16:00:00 |
| 102 | 1 | 2 | view_item | 2024-02-01 09:05:00 |
| 111 | 6 | 1 | login | 2024-02-12 08:00:00 |
| 101 | 1 | 1 | login | 2024-02-01 09:00:00 |
| 106 | 2 | 1 | logout | 2024-02-01 08:00:00 |
| 110 | 3 | 3 | login | 2024-02-05 10:00:00 |
| 104 | 1 | purchase | 2024-02-03 18:30:00 | |
| 109 | 5 | 99 | logout | 2024-02-11 16:00:00 |
| 103 | 1 | 2 | add_to_cart | 2024-02-03 18:30:00 |
| 112 | 7 | 1 | login | 2024-02-15 12:00:00 |
| 105 | 2 | 1 | login | 2024-02-01 08:00:00 |
| 107 | 5 | 1 | login | 2024-02-10 07:45:00 |
| 1 | 99 | 95 | login | 2024-02-05 07:34:48 |
| 2 | 95 | 81 | login | 2024-02-11 11:07:03 |
| 3 | 23 | 27 | login | 2024-02-14 06:45:51 |
| 4 | 64 | 64 | logout | 2024-02-04 23:06:00 |
| 5 | 95 | 36 | add_to_cart | 2024-01-31 04:52:08 |
| 6 | 65 | 54 | purchase | 2024-02-06 01:48:27 |
| 7 | 21 | 45 | login | 2024-02-03 07:57:56 |
| 8 | 55 | 25 | login | 2024-02-13 10:11:06 |
| 9 | 32 | 15 | login | 2024-02-16 18:43:34 |
| 10 | 10 | 24 | login | 2024-02-17 21:56:45 |
| 11 | 41 | 35 | login | 2024-02-08 02:10:07 |
| 12 | 10 | 9 | login | 2024-02-02 04:55:57 |
| 13 | 17 | 8 | logout | 2024-02-10 13:43:41 |
| 14 | 27 | 12 | support_ticket | 2024-02-08 11:37:21 |
| 15 | 59 | 5 | add_to_cart | 2024-01-30 16:35:06 |
| 16 | 56 | 50 | support_ticket | 2024-02-05 18:38:01 |
| platform_id | platform_name |
|---|---|
| 3 | android |
| 1 | web |
| 4 | tv |
| 2 | ios |
| 5 | kiosk |
| 6 | voice |
| 7 | |
| 8 | partner_api |
| 1 | voice |
| 2 | |
| 3 | android |
| 4 | ios |
| 5 | web |
| 6 | android |
| 7 | partner_api |
| 8 | tv |
| 9 | android |
| 10 | partner_api |
| 11 | |
| 12 | voice |
| 13 | voice |
| 14 | ios |
| 15 | kiosk |
| 16 | |
| 17 | ios |
| 18 | kiosk |
| 19 | android |
| 20 | web |
| user_id | full_name | first_event_type | first_event_time | last_event_type | last_event_time |
|---|---|---|---|---|---|
| 1 | Ava Chen | login | 2024-02-01 09:00:00 | purchase | 2024-02-03 18:30:00 |
| 2 | Ben Ortiz | login | 2024-02-01 08:00:00 | logout | 2024-02-01 08:00:00 |
| 4 | Diego Park | null | null | null | null |
| 5 | Ella Singh | login | 2024-02-10 07:45:00 | logout | 2024-02-11 16:00:00 |
| 7 | Grace Kim | login | 2024-02-15 12:00:00 | login | 2024-02-15 12:00:00 |
| 12 | Ben Ortiz | null | null | null | null |
| 14 | Ava Chen | null | null | null | null |
| 15 | Cara Lopez | null | null | null | null |
| 17 | Diego Park | logout | 2024-02-10 13:43:41 | logout | 2024-02-10 13:43:41 |