亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

建表、insert數(shù)據(jù)

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(),如果得到的日期相同,則認(rèn)為是連續(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ù)登錄天數(shù)

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天,則日期差應(yīng)該為3。

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

相關(guān)文章

  • mysql對于模糊查詢like的一些匯總

    mysql對于模糊查詢like的一些匯總

    這篇文章主要給大家介紹了關(guān)于mysql對于模糊查詢like的一些匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Navicat連接linux虛擬機(jī)上的MySQL可能遇到的問題及排查方法

    Navicat連接linux虛擬機(jī)上的MySQL可能遇到的問題及排查方法

    這篇文章主要介紹了Navicat連接linux虛擬機(jī)上的MySQL可能遇到的問題以及如何排查,本文給大家展示了問題描述及解決方法,需要的朋友可以參考下
    2024-02-02
  • 詳解關(guān)于MySQL 8.0走過的坑

    詳解關(guān)于MySQL 8.0走過的坑

    這篇文章主要介紹了詳解關(guān)于MySQL 8.0走過的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Linux下卸載MySQL數(shù)據(jù)庫

    Linux下卸載MySQL數(shù)據(jù)庫

    如何在Linux平臺卸載MySQL呢?這篇文章主要介紹了Linux下卸載MySQL數(shù)據(jù)庫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • mysql心得分享:存儲過程

    mysql心得分享:存儲過程

    MySQL 5.0以后的版本開始支持存儲過程,存儲過程具有一致性、高效性、安全性和體系結(jié)構(gòu)等特點,本文主要來分享下本人關(guān)于存儲過程的一些心得體會。
    2014-07-07
  • Mysql入門基礎(chǔ) 數(shù)據(jù)庫創(chuàng)建篇

    Mysql入門基礎(chǔ) 數(shù)據(jù)庫創(chuàng)建篇

    Mysql入門基礎(chǔ) 數(shù)據(jù)庫創(chuàng)建篇,剛接觸php與mysql的朋友可以參考下。多寫多測試。
    2010-04-04
  • idea中使用mysql的保姆級教程(超詳細(xì))

    idea中使用mysql的保姆級教程(超詳細(xì))

    我們開發(fā)時經(jīng)常需要用到一些客戶端去訪問數(shù)據(jù)庫查詢、更新數(shù)據(jù)等操作,下面這篇文章主要給大家介紹了關(guān)于idea中使用mysql的保姆級教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Linux下編譯安裝Mysql 5.5的簡單步驟

    Linux下編譯安裝Mysql 5.5的簡單步驟

    Linux下面因為從MySQL 5.5開始使用cmake來做config了,所以編譯安裝的會和5.1版本有些區(qū)別。不過總體來說還是差別不大
    2015-08-08
  • MySQL基本運(yùn)維命令詳解

    MySQL基本運(yùn)維命令詳解

    這篇文章主要介紹了MySQL基本運(yùn)維命令,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • MySQL讀取JSON轉(zhuǎn)換的方式

    MySQL讀取JSON轉(zhuǎn)換的方式

    這篇文章主要介紹了MySQL讀取JSON轉(zhuǎn)換的方式,本文給大家分享兩種方式給大家講解處理方式,結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03

最新評論