程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql若何查詢兩個日期之間最年夜的持續登錄天數

mysql若何查詢兩個日期之間最年夜的持續登錄天數

編輯:MySQL綜合教程

mysql若何查詢兩個日期之間最年夜的持續登錄天數。本站提示廣大學習愛好者:(mysql若何查詢兩個日期之間最年夜的持續登錄天數)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql若何查詢兩個日期之間最年夜的持續登錄天數正文


媒介

比來任務中碰到一個需求,是依據用戶持續記載天數來盤算的,求出用戶在一段時光內最年夜的持續記載時光,例如在 2016-01-01 和 2016-01-28 之間,假如用戶在3號和4號都記載了,那末持續記載天數為2,假如用戶在6號-10號逐日都記載了,那末最年夜持續記載天數為5.

拿到這個需求的時刻,說真話有點懵,第一想到的就是在代碼中去統計,會用到輪回,想到那末多個用戶,而且時光跨度也有點年夜,好比15年到16年,兩年時光,想一想就有點恐懼。

處理計劃

然後就把這個需求跟同伙說了,同伙也認為有點難弄,後來經由過程網上一篇文章有了一些小思緒。然則看得也是一知半解的,固然常常寫 sql 語句,但也是經常使用的那些增刪改查,像如許應用的方法基本沒用過,過了會,同伙又扔給我一條 sql 語句,就在該文章的基本長進行了修正,以相符我的項目需求的語句。

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;

查詢出來的成果以下圖所示:

假如要檢查單小我的,那末將 sql 語句中的 uid !=0 改成詳細的值便可。

總結

以上就是這篇文章的全體內容了,願望本文的內容對年夜家進修或許應用sql語句能有所贊助,假如有疑問年夜家可以留言交換。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved