SQL?查詢連續(xù)登錄的用戶情況
以連續(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ù)七天以上下單的用戶
https://blog.csdn.net/qq_43807789/article/details/99091753?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.highlightwordscore&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.highlightwordscore
到此這篇關(guān)于SQL 查詢連續(xù)n天登錄的用戶情況的文章就介紹到這了,更多相關(guān)SQL 查詢用戶連續(xù)登錄情況內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server2008數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出兼容性處理方案
SQL Server 的高版本數(shù)據(jù)庫(kù)恢復(fù)到低版本則可能會(huì)有兼容性問(wèn)題,下面為大家介紹的是如何解決此類(lèi)問(wèn)題2014-05-05完美解決SQL server2005中插入漢字變成問(wèn)號(hào)的問(wèn)題
以下是對(duì)在SQL server2005中插入漢字變成問(wèn)號(hào)的解決辦法進(jìn)行了分析介紹。需要的朋友可以過(guò)來(lái)參考下2013-08-08一個(gè)用來(lái)統(tǒng)計(jì)相同姓名人數(shù)的SQl語(yǔ)句
下面是語(yǔ)句是用來(lái)統(tǒng)計(jì)同名同姓人的個(gè)數(shù)。非常不錯(cuò)。需要的朋友可以參考下。2010-07-07sql語(yǔ)句優(yōu)化之SQL Server(詳細(xì)整理)
這篇文章主要介紹了sql語(yǔ)句優(yōu)化之SQL Server篇,整理的比較詳細(xì),推薦收藏2014-07-07詳解SQL Server數(shù)據(jù)庫(kù)狀態(tài)和文件狀態(tài)
本文通過(guò)實(shí)例給大家詳解sqlserver數(shù)據(jù)庫(kù)狀態(tài) (database states) 和文件狀態(tài) (database states),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09