求最大连续时间问题

数据库求最大连续时间问题

问题:

用户每天访问页面会记录此用户的名字和访问当天日期(一天一次),求该用户本月最大连续访问的天数

创建语句:

CREATE TABLE test01(nname VARCHAR(10),
ddate INT)
INSERT INTO test01(nname,ddate) VALUES (‘张’,1);
INSERT INTO test01(nname,ddate) VALUES (‘张’,3);
INSERT INTO test01(nname,ddate) VALUES (‘张’,4);
INSERT INTO test01(nname,ddate) VALUES (‘张’,5);
INSERT INTO test01(nname,ddate) VALUES (‘张’,7);
INSERT INTO test01(nname,ddate) VALUES (‘张’,8);
INSERT INTO test01(nname,ddate) VALUES (‘张’,9);
INSERT INTO test01(nname,ddate) VALUES (‘张’,10);
INSERT INTO test01(nname,ddate) VALUES (‘张’,11);
INSERT INTO test01(nname,ddate) VALUES (‘张’,22);
INSERT INTO test01(nname,ddate) VALUES (‘李’,2);
INSERT INTO test01(nname,ddate) VALUES (‘李’,3);
INSERT INTO test01(nname,ddate) VALUES (‘李’,4);
INSERT INTO test01(nname,ddate) VALUES (‘李’,5);
INSERT INTO test01(nname,ddate) VALUES (‘李’,6);
INSERT INTO test01(nname,ddate) VALUES (‘李’,9);

解决sql:

SELECT NNAME,
max(t3.c)
FROM
(SELECT nname,
COUNT(t2.cha)AS c
FROM
(SELECT t1.nname,
t1.ddate,
t1.px,
(t1.ddate-t1.px)AS cha
FROM
(SELECT NNAME,
DDATE,
ROW_NUMBER()OVER(PARTITION BY NNAME
ORDER BY DDATE) AS px
FROM TEST01)t1)t2
GROUP BY t2.nname,
t2.cha)t3
GROUP BY t3.nname

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值