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

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

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

前言

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

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

解決方案

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

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;

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

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

總結(jié)

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

相關(guān)文章

最新評論

荃湾区| 长宁区| 绥滨县| 延安市| 江北区| 腾冲县| 龙井市| 衡山县| 监利县| 祁阳县| 沂水县| 安顺市| 东莞市| 砚山县| 涟源市| 会昌县| 松阳县| 读书| 航空| 萨嘎县| 剑阁县| 定远县| 裕民县| 烟台市| 读书| 新安县| 双江| 乐陵市| 巴青县| 鞍山市| 乳山市| 霍林郭勒市| 遂川县| 永仁县| 门头沟区| 泗水县| 蒲城县| 吴桥县| 通许县| 堆龙德庆县| 赣州市|