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

MySQL如何計算連續(xù)登錄天數

 更新時間:2022年05月09日 09:37:25   作者:BurningSilence  
這篇文章主要介紹了MySQL如何計算連續(xù)登錄天數,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

建表、insert數據

create table tmp_login (
  user_id int(11) ,
  login_date datetime
);
insert into tmp_login values(2,'2020-05-29 11:12:12');
insert into tmp_login values(2,'2020-05-29 15:12:12');
insert into tmp_login values(2,'2020-05-30 11:12:12');
insert into tmp_login values(2,'2020-05-31 11:12:12');
insert into tmp_login values(2,'2020-06-01 11:12:12');
insert into tmp_login values(2,'2020-06-02 11:12:12');
insert into tmp_login values(2,'2020-06-03 11:12:12');
insert into tmp_login values(2,'2020-06-04 11:12:12');
insert into tmp_login values(2,'2020-06-05 11:12:12');
insert into tmp_login values(2,'2020-06-06 11:12:12');
insert into tmp_login values(2,'2020-06-07 11:12:12');
insert into tmp_login values(7,'2020-06-01 11:12:12');
insert into tmp_login values(7,'2020-06-02 11:12:12');
insert into tmp_login values(7,'2020-06-03 11:12:12');
insert into tmp_login values(7,'2020-06-05 11:12:12');
insert into tmp_login values(7,'2020-06-06 11:12:12');
insert into tmp_login values(7,'2020-06-07 11:12:12');
insert into tmp_login values(7,'2020-06-08 11:12:12');

方法一 row_number()

1.查詢所有用戶的每日登錄記錄

select distinct user_id, date(login_date) as days?
from tmp_login;

在這里插入圖片描述

2.row_number()計算登錄時間排序

select user_id, days, row_number() over(partition by user_id order by days) as rn
from (
	select distinct user_id, date(login_date) as days from tmp_login) t1;

在這里插入圖片描述

3.用登錄時間 - row_number(),如果得到的日期相同,則認為是連續(xù)登錄日期

select *, date_sub(days, interval rn day) as  results
from(
	select user_id, days, row_number() over(partition by user_id order by days) as rn
	from (
		select distinct user_id, date(login_date) as days from tmp_login) t1
) t2;

在這里插入圖片描述

4. 按user_id、results分組就可得出連續(xù)登錄天數

select user_id, count(*) as num_days
from (
	select *, date_sub(days, interval rn day) as  results
	from(
		select user_id, days, row_number() over(partition by user_id order by days) as rn
		from (
			select distinct user_id, date(login_date) as days from tmp_login) t1
	) t2) t3
group by user_id , results;

在這里插入圖片描述

直接用日期減去row_number(),不用date_sub的話,遇到登錄日期跨月時會計算錯誤,

方法二lead() 或 lag()

這種情況適合的場景是,需要查找連續(xù)登錄超過n天的用戶,n為確定值

如果n為4,即計算連續(xù)登錄超過4天的用戶

-- lead計算連續(xù)登錄
select distinct user_id 
from(
	select user_id, days, datediff(lead(days, 3, '1970-01-01') over(partition by user_id order by days), days)as results
	from (
		select distinct user_id, date(login_date) as days from tmp_login) t1) t2
where results = 3;

連續(xù)登錄4天,則日期差應該為3。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MySQL中使用replace、regexp進行正則表達式替換的用法分析

    MySQL中使用replace、regexp進行正則表達式替換的用法分析

    這篇文章主要介紹了MySQL中使用replace、regexp進行正則表達式替換的用法,結合具體實例形式分析了replace、regexp正則替換的使用技巧與相關注意事項,需要的朋友可以參考下
    2017-03-03
  • 快速解決MySQL服務無法啟動顯示:系統出錯,發(fā)生系統錯誤1067, 進程意外終止的兩種方法

    快速解決MySQL服務無法啟動顯示:系統出錯,發(fā)生系統錯誤1067, 進程意外終止的兩種方法

    本人因為phpstudy的MySQL數據庫與我的電腦上的MySQL數據庫發(fā)生沖突,當我將MySQL服務器的服務名從MySQL改為MySQL5后,啟動MySQL5服務后就報錯:系統出錯, 發(fā)生系統錯誤 1067, 進程意外終止,現在將這個解決方法分享給大家,需要的朋友可以參考下
    2024-06-06
  • MySQL數據庫如何開啟遠程連接(多備份)

    MySQL數據庫如何開啟遠程連接(多備份)

    多備份服務器在備份你的數據庫時,必須能夠遠程連接上你的數據庫。但是一般來說mysql安裝時都是關閉遠程連接的,因此,需要你開通mysql數據庫的遠程訪問權限。那么如何開啟呢
    2015-01-01
  • 安裝Mysql5.7.10 winx64出現的幾個問題匯總

    安裝Mysql5.7.10 winx64出現的幾個問題匯總

    這篇文章主要介紹了安裝Mysql5.7.10 winx64出現的幾個問題匯總及解決方案,非常不錯,需要的朋友可以參考下
    2016-08-08
  • mysql 數據類型TIMESTAMP

    mysql 數據類型TIMESTAMP

    timestamp數據類型是一個比較特殊的數據類型,他可以自動在你不使用程序更新情況下只要你更新了記錄timestamp會自動更新時間
    2014-07-07
  • MySQL讀寫分離原理詳細解析

    MySQL讀寫分離原理詳細解析

    這篇文章主要介紹了MySQL讀寫分離原理詳細解析,讀寫分離是基于主從復制來實現的,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • mysql實現設置定時任務的方法分析

    mysql實現設置定時任務的方法分析

    這篇文章主要介紹了mysql實現設置定時任務的方法,結合實例形式分析了mysql定時任務相關的事件計劃設置與存儲過程使用等操作技巧,需要的朋友可以參考下
    2019-10-10
  • MySQL學習筆記之數據的增、刪、改實現方法

    MySQL學習筆記之數據的增、刪、改實現方法

    這篇文章主要介紹了MySQL學習筆記之數據的增、刪、改實現方法,簡單介紹了mysql實現數據的增、刪、改相關語法與使用技巧,需要的朋友可以參考下
    2016-09-09
  • 解決ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?on?‘localhost‘?(111)的問題

    解決ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?

    在Windows系統上使用Django連接Ubuntu虛擬機中的MySQL數據庫時,遇到無法連接的問題,排查后發(fā)現是由于MySQL綁定的IP地址改變導致的,下面就來介紹一下問題解決,感興趣的可以了解一下
    2024-09-09
  • MySQL通過日志恢復數據的操作步驟

    MySQL通過日志恢復數據的操作步驟

    在MySQL中恢復誤刪除的數據是一個常見但復雜的問題,具體的方法取決于幾個因素,包括您是否有備份、使用的是哪種存儲引擎(如InnoDB或MyISAM)、以及您的數據庫配置等,本文給大家介紹了MySQL通過日志恢復數據的操作步驟,需要的朋友可以參考下
    2024-12-12

最新評論

犍为县| 麻城市| 谢通门县| 视频| 布拖县| 天长市| 曲阳县| 江津市| 稷山县| 炎陵县| 明溪县| 深泽县| 新乡市| 涟水县| 瓦房店市| 抚宁县| 油尖旺区| 西平县| 沁阳市| 荔浦县| 繁昌县| 石首市| 綦江县| 湖州市| 扶沟县| 同江市| 诸城市| 南康市| 常宁市| 讷河市| 凤城市| 苗栗市| 天气| 宁明县| 阆中市| 清涧县| 临澧县| 昌乐县| 碌曲县| 天台县| 龙川县|