【发布时间】:2021-04-12 23:16:18
【问题描述】:
我有一个 SQL 数据库,有两个名为 users 和 user_activities 的表(见下文)。我正在尝试从带有 id_user 的查询中获取数据框,以及用户在注册第二天后进行的会话数。为了识别会话,我们在 user_activities 表中有活动“会话”。
为此,我需要合并两个表。第一个,users,提供 user_id 和 registration_date:
用户表:
| user_id | registration_date |
|---|---|
| 1 | 2021-01-10 04:37:14 |
| 1 | 2021-01-10 10:37:24 |
| 2 | 2021-01-10 20:37:44 |
| 3 | 2021-01-10 20:10:14 |
| 2 | 2021-01-10 10:37:04 |
另一个,user_activities,跟踪每个用户进行的所有活动:
user_activities 表
| user | activity | date |
|---|---|---|
| 1 | session | 2021-01-10 04:37:14 |
| 1 | mainPage | 2021-01-10 10:37:24 |
| 2 | session | 2021-01-10 20:37:44 |
| 3 | session | 2021-01-10 20:10:14 |
| 4 | session | 2021-01-11 00:02:04 |
| 2 | session | 2021-01-12 00:03:04 |
| 4 | session | 2021-01-13 00:31:04 |
| 5 | session | 2021-01-14 20:23:04 |
| 2 | session | 2021-01-15 10:36:52 |
| 2 | mainPage | 2021-01-15 10:37:04 |
我想要得到什么
我想获得一个包含 user_id 和 会话数 的 df,在他们注册的第二天之后进行。只有会话数超过 0 的用户才会包含在该 df 中。如下:
| user_id | n_sessions |
|---|---|
| 2 | 2 |
| 4 | 1 |
| 5 | 1 |
为了获取每个用户的会话数,我之前做过:
import mysql.connector
import pandas as pd
mydb = mysql.connector.connect(host="localhost", user="root", password="", database="users")
mycursor = mydb.cursor()
#sesiones por usuario
mycursor.execute("SELECT user_id, COUNT(*) FROM user_activities WHERE name = 'session' GROUP BY user_id;")
sessions_per_user = pd.DataFrame(mycursor, columns=['user_id','n_sessions'])
但我不知道如何加入 registration_date 条件。有人知道怎么做吗?
【问题讨论】:
标签: python mysql sql dataframe