我如何在SQL中执行此操作?假设我有一个看起来像这样的表Logins
。这只是user_id
的一个片段(实际的表格会有更多用户),它会显示用户的登录时间戳以及他们在未登录的情况下访问网站的情况。
登录:
+---------------------+---------------------+---------------------+
| user_id | login_date | visit_date |
|---------------------|---------------------|---------------------|
| 12 | 2017-04-02 10:29:58 | 2017-04-02 10:10:41 |
|---------------------|---------------------|---------------------|
| 12 | 2017-04-02 12:49:35 | 2017-04-02 10:10:41 |
|---------------------|---------------------|---------------------|
| 12 | 2017-05-03 12:03:39 | 2017-04-02 10:10:41 |
|---------------------|---------------------|---------------------|
| 12 | 2017-05-03 12:03:39 | 2017-04-19 07:55:40 |
|---------------------|---------------------|---------------------|
| 12 | 2017-05-03 12:03:39 | 2017-05-03 11:54:11 |
|---------------------|---------------------|---------------------|
| 12 | 2017-06-02 10:30:04 | 2017-04-02 10:10:41 |
|---------------------|---------------------|---------------------|
| 12 | 2017-06-02 10:30:04 | 2017-04-19 07:55:40 |
|---------------------|---------------------|---------------------+
如何创建此表?
+---------------------+---------------------+---------------------+---------------------+
| user_id | login_date | visit_date | prev_login |
|---------------------|---------------------|---------------------|---------------------|
| 12 | 2017-04-02 10:29:58 | 2017-04-02 10:10:41 | NULL |
|---------------------|---------------------|---------------------|---------------------|
| 12 | 2017-04-02 12:49:35 | 2017-04-02 10:10:41 | 2017-04-02 10:29:58 |
|---------------------|---------------------|---------------------|---------------------|
| 12 | 2017-05-03 12:03:39 | 2017-04-02 10:10:41 | 2017-04-02 12:49:35 |
|---------------------|---------------------|---------------------|---------------------|
| 12 | 2017-05-03 12:03:39 | 2017-04-19 07:55:40 | 2017-04-02 12:49:35 |
|---------------------|---------------------|---------------------|---------------------|
| 12 | 2017-05-03 12:03:39 | 2017-05-03 11:54:11 | 2017-04-02 12:49:35 |
|---------------------|---------------------|---------------------|---------------------|
| 12 | 2017-06-02 10:30:04 | 2017-04-02 10:10:41 | 2017-05-03 12:03:39 |
|---------------------|---------------------|---------------------|---------------------|
| 12 | 2017-06-02 10:30:04 | 2017-04-19 07:55:40 | 2017-05-03 12:03:39 |
|---------------------|---------------------|---------------------|---------------------+
基本上,一个显示上一个登录日期的新列,如果没有,则为null。我尝试使用滞后函数,但它只回溯到X前面的行,这对我的情况不起作用。我尝试进行自我加入,但行数在我身上爆炸。请帮忙!
编辑:nvm,终于解决了。 Dense_rank自我加入