好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > mysql如何查詢兩個日期之間最大的連續登錄天數

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

熱門標簽:安陽手機自動外呼系統原理是什么 如何辦理400客服電話 外呼系統線路經常出問題嗎 地圖標注什么軟件好用 神行者百貨商場地圖標注 西藏地圖標注改進點 地圖標注專員入駐 地圖標注百度競價 外呼系統怎樣才能不封號

前言

最近工作中遇到一個需求,是根據用戶連續記錄天數來計算的,求出用戶在一段時間內最大的連續記錄時間,例如在 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語句能有所幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:
  • MYSQL實現連續簽到功能斷簽一天從頭開始(sql語句)
  • SQLSERVER記錄登錄用戶的登錄時間(自寫腳本)
  • SQLSERVER記錄登錄用戶的登錄時間(自寫腳本)
  • SQL查詢語句求出用戶的連續登陸天數

標簽:萍鄉 雞西 酒泉 阜陽 衡水 貴港 張掖 AXB

巨人網絡通訊聲明:本文標題《mysql如何查詢兩個日期之間最大的連續登錄天數》,本文關鍵詞  mysql,如何,查詢,兩個,日期,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql如何查詢兩個日期之間最大的連續登錄天數》相關的同類信息!
  • 本頁收集關于mysql如何查詢兩個日期之間最大的連續登錄天數的相關信息資訊供網民參考!
  • 推薦文章