如何統計每個小時使用者線上人數?,統計使用者線上人數

來源:互聯網
上載者:User

如何統計每個小時使用者線上人數?,統計使用者線上人數

   系統有一個表記錄使用者登入、登出的日誌,現在以一個小時為段,統計出線上人數,這是一個數學問題。

情況1:

               |___________一個小時____________|

                 <=登入時間        登出時間<=

情況2:

               |___________一個小時____________|

 登入時間 <                                       < 登出時間

情況3:

               |___________一個小時____________|

 登入時間 <=            登出時間<=

情況4:

               |___________一個小時____________|

                 <=登入時間                         < 登出時間


with dd as( --類比出24個小時時段

SELECT (trunc(to_date('2015-02-09', 'yyyy-mm-dd')) + (LEVEL - 1) / 24) one_hour_1,
               (trunc(to_date('2015-02-09', 'yyyy-mm-dd')) + LEVEL / 24) one_hour_2
          FROM dual
        CONNECT BY LEVEL <= 24
)
SELECT dd.one_hour_1, COUNT(1)
  FROM log_user_login d,
       dd
 WHERE (d.login_time >= dd.one_hour_1 AND d.exit_time <= dd.one_hour_2)
    OR (d.login_time < dd.one_hour_1 AND d.exit_time BETWEEN dd.one_hour_1 AND dd.one_hour_2)
    OR (d.login_time BETWEEN dd.one_hour_1 AND dd.one_hour_2 AND d.exit_time > dd.one_hour_2)
    OR (d.login_time < dd.one_hour_1 AND d.exit_time > dd.one_hour_2)
 GROUP BY dd.one_hour_1
 ORDER BY dd.one_hour_1;

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.