df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

首次与末次

中等 10-groupby 分组聚合 groupbyminmaxfirstlast

统计每个用户第一次和最后一次活动的时间,以及事件总数。

  • first_ts:该用户最早的事件时间;last_ts:最晚的事件时间。只有一个事件的用户,两者相同。
  • n_events:该用户的事件条数,完全重复的事件也分别计数。
  • 注意:事件表的行不保证按时间排序,“第一次”指时间最早,而不是在表里排在最前面。

输入

  • events(event_id, user_id, ts, event_type, page)

输出

列为 user_id, first_ts, last_ts, n_events,行顺序不限。

输入表 (case base,共 2 个 case:base、unsorted)

events web/events
#event_idint64user_idint64tsdatetimeevent_typestringpagestring
1 1 53 2026-06-03 17:57:33 login /home
2 2 53 2026-06-04 15:21:00 visit /home
3 3 53 2026-06-04 15:22:00 view /product/303
4 4 53 2026-06-04 15:32:04 add_to_cart /cart
5 5 56 2026-06-05 23:24:19 login /home
6 6 56 2026-06-05 23:29:18 view /product/202
7 7 56 2026-06-05 23:36:15 view /product/202
8 8 56 2026-06-05 23:47:36 add_to_cart /cart
9 9 56 2026-06-05 23:56:24 checkout /checkout
10 10 56 2026-06-06 19:14:00 visit /home
11 11 56 2026-06-06 19:22:53 view /product/303
12 12 56 2026-06-06 19:25:12 view /home
13 13 56 2026-06-06 19:28:25 add_to_cart /cart
14 14 29 2026-06-07 10:40:01 login /home
15 15 29 2026-06-07 10:46:43 view /product/303
16 16 29 2026-06-07 11:04:46 add_to_cart /cart
17 17 29 2026-06-07 11:09:25 checkout /checkout
18 18 34 2026-06-07 12:57:49 login /home
19 19 34 2026-06-07 13:03:57 view /product/202
20 20 34 2026-06-07 13:11:07 view /home
显示前 20 行,共 1500 行

期望输出 (case base,行顺序不限)

#user_idInt64first_tsDatetime(time_unit='us', time_zone=None)last_tsDatetime(time_unit='us', time_zone=None)n_eventsInt64
1 29 2026-06-07 10:40:01 2026-09-08 02:40:56 32
2 34 2026-06-07 12:57:49 2026-09-14 18:25:21 11
3 54 2026-06-15 06:34:26 2026-09-18 12:01:16 11
4 42 2026-06-17 03:35:48 2026-10-09 13:31:00 32
5 11 2026-06-18 10:11:08 2026-10-15 05:41:16 37
6 35 2026-06-20 02:54:21 2026-07-24 20:21:59 23
7 2 2026-06-20 22:41:20 2026-07-11 15:48:41 8
8 16 2026-06-23 15:03:12 2026-10-07 22:48:47 33
9 52 2026-06-29 20:33:45 2026-10-07 07:18:51 26
10 50 2026-07-02 02:39:13 2026-10-07 03:46:04 20
11 37 2026-07-06 13:07:09 2026-09-07 00:06:40 26
12 28 2026-07-10 08:14:52 2026-10-03 10:02:01 42
13 5 2026-07-17 14:18:25 2026-10-01 07:31:36 33
14 44 2026-07-23 03:51:13 2026-10-09 07:25:41 25
15 26 2026-07-30 17:43:49 2026-10-08 11:52:12 29
16 55 2026-08-08 15:02:35 2026-10-04 15:56:31 31
17 9 2026-08-09 06:10:40 2026-10-06 14:26:06 23
18 31 2026-08-09 21:32:21 2026-10-14 01:28:33 15
19 14 2026-08-11 15:25:25 2026-10-11 00:19:51 36
20 15 2026-08-17 10:39:06 2026-10-12 15:15:05 40
21 18 2026-08-21 13:17:02 2026-09-30 04:45:36 28
22 22 2026-08-23 09:23:36 2026-10-09 17:34:11 27
23 60 2026-08-24 05:05:27 2026-10-11 03:04:09 22
24 30 2026-08-28 23:57:40 2026-10-08 23:19:19 26
25 32 2026-09-03 07:05:58 2026-10-14 15:10:57 23
26 17 2026-09-04 08:24:08 2026-10-12 19:43:44 21
27 47 2026-09-04 13:14:04 2026-10-10 21:14:17 39
28 39 2026-09-05 19:04:32 2026-10-09 21:19:09 32
29 49 2026-09-07 00:23:19 2026-09-19 09:26:26 17
30 10 2026-09-08 17:53:29 2026-10-05 06:05:01 12
31 53 2026-06-03 17:57:33 2026-08-29 00:27:23 9
32 56 2026-06-05 23:24:19 2026-10-12 00:28:31 28
33 41 2026-06-18 21:40:13 2026-09-27 23:25:40 37
34 1 2026-06-24 03:16:20 2026-09-20 11:11:52 26
35 43 2026-06-24 11:18:24 2026-09-25 11:08:43 13
36 45 2026-07-01 01:15:17 2026-09-21 01:45:14 40
37 59 2026-07-04 03:56:34 2026-09-04 09:50:49 21
38 20 2026-07-14 14:37:42 2026-10-11 15:50:13 32
39 23 2026-07-15 11:03:42 2026-10-14 16:43:58 29
40 8 2026-07-19 20:13:09 2026-10-11 12:56:59 45
41 6 2026-07-26 18:58:11 2026-09-20 05:00:42 19
42 57 2026-07-29 23:28:46 2026-08-03 07:21:38 11
43 40 2026-08-19 21:08:50 2026-09-07 17:06:55 19
44 24 2026-08-28 16:51:30 2026-09-21 01:13:47 14
45 12 2026-08-28 20:04:40 2026-09-29 13:08:14 14
46 27 2026-09-02 00:15:09 2026-10-10 15:56:34 25
47 38 2026-09-02 01:18:00 2026-10-09 05:20:48 8
48 7 2026-09-04 05:22:06 2026-10-08 03:38:28 32
49 4 2026-09-04 08:12:49 2026-10-11 14:21:31 37
50 33 2026-09-05 13:07:12 2026-10-14 10:55:13 14
显示前 50 行,共 60 行