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

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

 更新時(shí)間:2016年10月23日 08:51:15   投稿:daisy  
在現(xiàn)在的很多網(wǎng)站中都有這樣一個(gè)功能。記錄用戶的連續(xù)登陸天數(shù),所謂的連續(xù)在線是指相鄰兩天都登錄過(guò),不一定一直在線,但是只要有過(guò)登錄即可。這篇文章主要介紹的是利用sql語(yǔ)句如何查詢?cè)趦蓚€(gè)日期之間最大的連續(xù)登錄天數(shù),有需要的朋友們下面來(lái)一起看看吧。

前言

最近工作中遇到一個(gè)需求,是根據(jù)用戶連續(xù)記錄天數(shù)來(lái)計(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í)候,說(shuō)實(shí)話有點(diǎn)懵,第一想到的就是在代碼中去統(tǒng)計(jì),會(huì)用到循環(huán),想到那么多個(gè)用戶,并且時(shí)間跨度也有點(diǎn)大,比如15年到16年,兩年時(shí)間,想想就有點(diǎn)恐怖。

解決方案

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

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) ntmp
GROUP BY uid;

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

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

總結(jié)

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

相關(guān)文章

  • 通過(guò)代碼實(shí)例了解頁(yè)面置換算法原理

    通過(guò)代碼實(shí)例了解頁(yè)面置換算法原理

    這篇文章主要介紹了通過(guò)代碼實(shí)例了解頁(yè)面置換算法原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 解決Node.js mysql客戶端不支持認(rèn)證協(xié)議引發(fā)的問(wèn)題

    解決Node.js mysql客戶端不支持認(rèn)證協(xié)議引發(fā)的問(wèn)題

    這篇文章主要介紹了解決Node.js mysql客戶端不支持認(rèn)證協(xié)議引發(fā)的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • mysql 悲觀鎖與樂(lè)觀鎖的理解及應(yīng)用分析

    mysql 悲觀鎖與樂(lè)觀鎖的理解及應(yīng)用分析

    這篇文章主要介紹了mysql 悲觀鎖與樂(lè)觀鎖的理解及應(yīng)用,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫(kù)悲觀鎖與樂(lè)觀鎖相關(guān)概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • mysql聚集索引、輔助索引、覆蓋索引、聯(lián)合索引的使用

    mysql聚集索引、輔助索引、覆蓋索引、聯(lián)合索引的使用

    本文主要介紹了mysql聚集索引、輔助索引、覆蓋索引、聯(lián)合索引的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 清空mysql 查詢緩存的可行方法

    清空mysql 查詢緩存的可行方法

    mysql對(duì)同一條sql進(jìn)行了緩存,在第二次運(yùn)行時(shí), 瞬間就完成了,若要清除緩存,可通過(guò)下面的方法來(lái)實(shí)現(xiàn)
    2014-07-07
  • MySQL數(shù)據(jù)歸檔小工具mysql_archiver詳解

    MySQL數(shù)據(jù)歸檔小工具mysql_archiver詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)歸檔小工具mysql_archiver詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • MySQL中報(bào)錯(cuò):Can’t find file: ‘./mysql/plugin.frm’的解決方法

    MySQL中報(bào)錯(cuò):Can’t find file: ‘./mysql/plugin.frm’的解決方法

    這篇文章主要給大家介紹了關(guān)于在MySQL中報(bào)錯(cuò):Can't find file: './mysql/plugin.frm'的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • ERROR 1406 : Data too long for column 解決辦法

    ERROR 1406 : Data too long for column 解決辦法

    導(dǎo)入數(shù)據(jù)的時(shí)候,mysql報(bào)錯(cuò) ERROR 1406 : Data too long for column Data too long for column
    2011-04-04
  • redhat7通過(guò)yum安裝mysql5.7.17教程

    redhat7通過(guò)yum安裝mysql5.7.17教程

    這篇文章主要為大家詳細(xì)介紹了redhat7通過(guò)yum安裝mysql5.7.17教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MYSQL函數(shù)的使用梳理

    MYSQL函數(shù)的使用梳理

    本篇文章講解是是MySQL的函數(shù)方法,涵蓋所有的MySQL常見(jiàn)的方法,MySQL函數(shù),是一種控制流程函數(shù),屬于數(shù)據(jù)庫(kù)用語(yǔ)言,以下列出了這些函數(shù)的說(shuō)明
    2022-05-05

最新評(píng)論