SQL查詢連續(xù)登陸7天以上的用戶的方法實(shí)現(xiàn)
查詢7天連續(xù)登陸用戶這個(gè)問(wèn)題很經(jīng)典,解決方法也有很多,這里我講一下筆者的方法,希望對(duì)大家有幫助。
具體思路:
1、因?yàn)槊刻煊脩舻卿洿螖?shù)可能不止一次,所以需要先將用戶每天的登錄日期去重。
2、再用row_number() over(partition by _ order by _)函數(shù)將用戶id分組,按照登陸時(shí)間進(jìn)行排序。
3、計(jì)算登錄日期減去第二步驟得到的結(jié)果值,用戶連續(xù)登陸情況下,每次相減的結(jié)果都相同。
4、按照id和日期分組并求和,篩選大于等于7的即為連續(xù)7天登陸的用戶。
表信息如下圖
第一步:用戶登錄日期去重
select DISTINCT date(date) as 日期,id from orde;
結(jié)果為:
第二步:用row_number() over()函數(shù)計(jì)數(shù)
select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a;
結(jié)果為:
第三步:日期減去計(jì)數(shù)值得到結(jié)果
select *,date(日期)-cum as 結(jié)果 from (select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a)b;
結(jié)果:
第四步:根據(jù)id和結(jié)果分組并計(jì)算總和,大于等于7的即為連續(xù)登陸7天的用戶
select id,count(*) from (select *,date(日期)-cum as 結(jié)果 from (select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a)b)c GROUP BY id,結(jié)果 having count(*)>=7;
結(jié)果為:
用了多次嵌套查詢,最終得到我們需要的結(jié)果。
到此這篇關(guān)于SQL查詢連續(xù)登陸7天以上的用戶的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SQL查詢連續(xù)登陸用戶內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sql 判斷函數(shù)、存儲(chǔ)過(guò)程是否存在的代碼整理
本文主要為大家介紹了sql下用來(lái)判斷各種資源是否存在的代碼,希望對(duì)大家學(xué)習(xí)sql的函數(shù)及數(shù)據(jù)庫(kù)能夠有所幫助2014-07-07SQLSERVER語(yǔ)句的執(zhí)行時(shí)間顯示的統(tǒng)計(jì)結(jié)果是什么意思
在SQL語(yǔ)句調(diào)優(yōu)的時(shí)候,大部分都會(huì)查看語(yǔ)句執(zhí)行時(shí)間,究竟SQLSERVER顯示出來(lái)的統(tǒng)計(jì)結(jié)果是什么意思,接下來(lái)為您一一解釋,感興趣的朋友可以了解下2013-01-01sqlserver如何生成連續(xù)數(shù)值,字母,字符
這篇文章主要介紹了sqlserver如何生成連續(xù)數(shù)值,字母,字符問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07查詢SQLServer啟動(dòng)時(shí)間的三種方法
這篇文章主要介紹了查詢SQLServer啟動(dòng)時(shí)間的三種方法,本文直接給出查詢示例,需要的朋友可以參考下2015-07-07SqlServer GO命令循環(huán)使用實(shí)例代碼
這篇文章主要介紹了SQL SERVER GO命令循環(huán)使用實(shí)例代碼,通過(guò)go命令來(lái)達(dá)到語(yǔ)句循環(huán)效果,需要的朋友可以參考下2018-08-08淺析Sql server鎖,獨(dú)占鎖,共享鎖,更新鎖,樂(lè)觀鎖,悲觀鎖
以下是對(duì)Sql server鎖,獨(dú)占鎖,共享鎖,更新鎖,樂(lè)觀鎖,悲觀鎖進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08遠(yuǎn)程連接局域網(wǎng)內(nèi)的sql server 無(wú)法連接 錯(cuò)誤與解決方法
下面我們依次介紹如何來(lái)解決這三個(gè)最常見(jiàn)的連接錯(cuò)誤。2009-09-09SQL Server誤區(qū)30日談 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB
乍一看,由于BACKUP WITH CHECKSUM會(huì)檢測(cè)所有分配出去的頁(yè)的校驗(yàn)和的值,這個(gè)誤區(qū)貌似是這么回事,但實(shí)際上并不是這么回事2013-01-01SQL入侵恢復(fù)xp_cmdshell方法總結(jié)
恢復(fù)xp_cmdshell SQL Server阻止了對(duì)組件 'xp_cmdshell' 的過(guò)程'sys.xp_cmdshell' 啟用2010-08-08