最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL查詢至少連續(xù)n天登錄的用戶

 更新時(shí)間:2022年01月01日 11:21:08   作者:?LUC?  
這篇文章介紹了SQL查詢至少連續(xù)n天登錄用戶的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

以連續(xù)3天為例,使用工具:MySQL。

1.創(chuàng)建SQL表:

create table if not exists orde(id varchar(10),date datetime,orders varchar(10));
insert into orde values('1' , '2019/1/1',10 );
insert into orde values('1' , '2019/1/2',109 );
insert into orde values('1' , '2019/1/3',150 );
insert into orde values('1' , '2019/1/4',99);
insert into orde values('1' , '2019/1/5',145);
insert into orde values('1' , '2019/1/6',1455);
insert into orde values('1' , '2019/1/7',199);
insert into orde values('1' , '2019/1/8',188 );
insert into orde values('4' , '2019/1/1',10 );
insert into orde values('2' , '2019/1/2',109 );
insert into orde values('3' , '2019/1/3',150 );
insert into orde values('4' , '2019/1/4',99);
insert into orde values('5' , '2019/1/5',145);
insert into orde values('6' , '2019/1/6',1455);
insert into orde values('7' , '2019/1/7',199);
insert into orde values('8' , '2019/1/8',188 );
insert into orde values('9' , '2019/1/1',10 );
insert into orde values('9' , '2019/1/2',109 );
insert into orde values('9' , '2019/1/3',150 );
insert into orde values('9' , '2019/1/4',99);
insert into orde values('9' , '2019/1/6',145);
insert into orde values('9' , '2019/1/9',1455);
insert into orde values('9' , '2019/1/10',199);
insert into orde values('9' , '2019/1/13',188 );

查看數(shù)據(jù)表:

2.使用row_number() over()  排序函數(shù)計(jì)算每個(gè)id的排名,SQL如下:

select *,row_number() over(partition by id order by date ) 'rank'
from orde
where orders is not NULL;

查看數(shù)據(jù)表:

 3.將date日期字段減去rank排名字段,SQL如下:

select *,DATE_SUB(a.date,interval a.rank day) 'date_sub'
from(
select *,row_number() over(partition by id order by date ) 'rank'
from orde
where orders is not NULL
) a;

查看數(shù)據(jù):

4.根據(jù)id和date分組并計(jì)算分組后的數(shù)量(count)、計(jì)算最早登錄和最晚登錄的時(shí)間,SQL如下:

select b.id,min(date) 'start_time',max(date) 'end_time',count(*) 'date_count'
from(
select *,DATE_SUB(a.date,interval a.rank day) 'date_sub'
from(
select *,row_number() over(partition by id order by date ) 'rank'
from orde
where orders is not NULL
) a
) b
group by b.date_sub,id
having count(*) >= 3
;

 查看數(shù)據(jù):

參考資料:

SQL查詢至少連續(xù)七天下單的用戶

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

保康县| 射洪县| 嵊泗县| 贡嘎县| 高密市| 连山| 盘山县| 江油市| 井冈山市| 娄底市| 隆尧县| 兴文县| 太康县| 万盛区| 裕民县| 溧阳市| 龙泉市| 景洪市| 楚雄市| 山西省| 汉阴县| 潞城市| 连云港市| 淳安县| 哈尔滨市| 兴海县| 教育| 东乡族自治县| 土默特右旗| 三明市| 湟中县| 桂平市| 磴口县| 赫章县| 藁城市| 灵台县| 海南省| 宣武区| 夏津县| 汉沽区| 南陵县|