网站开发公司简介怎么写,西宁市网站建设价格,欧美化妆品网站模板,个人网站建设及实现作者SQL入门小白#xff0c;此栏仅是记录一些解题过程 1、题目
用户访问表users#xff0c;记录了用户id#xff08;usr_id#xff09;和访问日期#xff08;log_date#xff09;,求出连续3天以上访问的用户id。 2、解答过程
2.1数据准备
通过navicat创建数据#xf… 作者SQL入门小白此栏仅是记录一些解题过程 1、题目
用户访问表users记录了用户idusr_id和访问日期log_date,求出连续3天以上访问的用户id。 2、解答过程
2.1数据准备
通过navicat创建数据首先创建表设置字段类型 然后打开数据表添加数据 2.2 解题
首先按照用户id给log_data排序
SELECT usr_id,log_data,ROW_NUMBER() OVER (PARTITION BY usr_id
ORDER BY log_data) AS rank_id
FROM q1
得到结果 rank_id 得到排名后我们用访问日期减去排名得到一个时间flg_date 。
SELECT usr_id,DATE_SUB(log_date,INTERVAL rank_id DAY) AS flg_date
FROM (SELECT usr_id, log_date,ROW_NUMBER() OVER (PARTITION BY usr_id ORDER BY log_date) AS rank_idFROM users
) AS A同一个用户有3个及以上flg_date相同说明用户连续访问3天。
SELECTusr_id,DATE_SUB(log_date,INTERVAL rank_id DAY) AS flg_date
FROM (SELECTusr_id,log_date,ROW_NUMBER() OVER (PARTITION BY usr_id ORDER BY log_date) AS rank_idFROM users
) AS A
GROUP BY usr_id,flg_date
HAVING COUNT(flg_date) 3