国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫(kù) > MySQL > 正文

mysql如何查詢兩個(gè)日期之間最大的連續(xù)登錄天數(shù)

2024-07-24 13:10:59
字體:
供稿:網(wǎng)友

前言

最近工作中遇到一個(gè)需求,是根據(jù)用戶連續(xù)記錄天數(shù)來計(jì)算的,求出用戶在一段時(shí)間內(nèi)最大的連續(xù)記錄時(shí)間,例如在 2016-01-01 和 2016-01-28 之間,如果用戶在3號(hào)和4號(hào)都記錄了,那么連續(xù)記錄天數(shù)為2,如果用戶在6號(hào)-10號(hào)每日都記錄了,那么最大連續(xù)記錄天數(shù)為5.

拿到這個(gè)需求的時(shí)候,說實(shí)話有點(diǎn)懵,第一想到的就是在代碼中去統(tǒng)計(jì),會(huì)用到循環(huán),想到那么多個(gè)用戶,并且時(shí)間跨度也有點(diǎn)大,比如15年到16年,兩年時(shí)間,想想就有點(diǎn)恐怖。

解決方案

然后就把這個(gè)需求跟朋友說了,朋友也覺得有點(diǎn)難搞,后來通過網(wǎng)上一篇文章有了一些小思路。但是看得也是一知半解的,雖然經(jīng)常寫 sql 語句,但也是常用的那些增刪改查,像這樣使用的方式根本沒用過,過了會(huì),朋友又扔給我一條 sql 語句,就在該文章的基礎(chǔ)上進(jìn)行了修改,以符合我的項(xiàng)目需求的語句。

SELECT *FROM (SELECT *   FROM (       SELECT        uid,        max(days)   lianxu_days,        min(login_day) start_date,        max(login_day) end_date       FROM (SELECT           uid,           @cont_day :=           (CASE           WHEN (@last_uid = uid AND DATEDIFF(created_ts, @last_dt) = 1)            THEN             (@cont_day + 1)           WHEN (@last_uid = uid AND DATEDIFF(created_ts, @last_dt) < 1)            THEN             (@cont_day + 0)           ELSE            1           END)                       AS days,           (@cont_ix := (@cont_ix + IF(@cont_day = 1, 1, 0))) AS cont_ix,           @last_uid := uid,           @last_dt := created_ts                login_day          FROM (SELECT              uid,              DATE(created_ts) created_ts             FROM plan_stage             WHERE uid != 0             ORDER BY uid, created_ts) AS t,           (SELECT            @last_uid := '',            @last_dt := '',            @cont_ix := 0,            @cont_day := 0) AS t1         ) AS t2       GROUP BY uid, cont_ix       HAVING lianxu_days > 10      ) tmp   ORDER BY lianxu_days DESC) ntmpGROUP BY uid;

查詢出來的結(jié)果如下圖所示:

mysql,統(tǒng)計(jì)連續(xù)天數(shù),連續(xù)天數(shù),連續(xù)簽到天數(shù)

如果要查看單個(gè)人的,那么將 sql 語句中的 uid !=0 改成具體的值即可。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用sql語句能有所幫助,如果有疑問大家可以留言交流。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MYSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平果县| 扎兰屯市| 新化县| 新竹市| 密云县| 卢龙县| 永登县| 罗源县| 湟中县| 民县| 大荔县| 石台县| 彭州市| 普宁市| 西藏| 昭苏县| 台北县| 贡觉县| 平顶山市| 铅山县| 环江| 普兰县| 南岸区| 连云港市| 淮安市| 合阳县| 大同县| 阳谷县| 桃园县| 海林市| 资源县| 那曲县| 买车| 斗六市| 蓝田县| 潜山县| 凌源市| 吴川市| 湟中县| 南京市| 茂名市|