2014-05-20 35 views
0

需要幫助進行SQL查詢,該查詢會在指定的時間段(如上週或上個月)爲同時登錄的用戶提供行計數。我需要得到日期和數量。SQL在指定的日期時間段內獲得大多數匹配

SQL表中有這些列: ID(indentifier,數字) 用戶名(爲varchar) LoggedInDate(日期時間) LoggedOutDate(日期時間)

想法是讓用戶的最大數量被記錄在誰的數同一時間段內。

任何幫助,將不勝感激!

感謝, 艾羅

+0

請更具體地關於「row依靠同時登錄的用戶「。這是否會反映該時間段內任何特定時刻的最大用戶數量,或該時段內登錄用戶的總數量,或該特定時段內用戶的平均數量? – Pred

+0

每次用戶登錄時,都會使用UserName和LoggedInDate創建新行。當用戶註銷時,使用LoggedOutDate更新行。我想要記錄在同一時間(LoggedInDate和LoggedOutDate之間)登錄的maximun用戶(行)的數量。可以說這個時間段是月份,所以我想知道登錄用戶最多的日期。 – Porttila

回答

0

當有人登錄時,最大值必定發生,因此我們檢查每次登錄後登錄的次數是多少

SELECT MAX(LoggedInCount) 
FROM table 
    CROSS APPLY (
      SELECT COUNT(1) AS LoggedInCount 
      FROM table AS InnerTable 
      WHERE InnerTable.LoggedInDate <= table.LoggedInDate 
       AND InnerTable.LoggedOutDate >= table.LoggedInDate 
    ) AS CA1 
WHERE table.LoggedInDate IN YourPeriod 
+0

謝謝,這幫助我以正確的方式。 – Porttila

0
select count(1) as counter, 
DATE_FORMAT(LoggedInDate, '%Y-%m-%d') as loggedInDate 
from tabel 
group by DATE_FORMAT(LoggedInDate, '%Y-%m-%d') 

東西類似於Id言 然後你得到x量登錄的用戶在z一天,你可以增加日期格式,包括小時,如果需要,可以