2015-02-07 27 views
-1

我有一張表跟蹤用戶對應用程序的登錄歷史記錄。目前,這張表對於大多數用戶來說每天都有幾次登錄,因爲他們的瀏覽器會話過期了。我需要編寫一個查詢,以爲每個在應用程序的生命週期(一年以上)內24小時內登錄的用戶提供不同的用戶名。我需要擺脫多次每日登錄。如何使用下面的date_created時間戳字段在24小時的時間範圍內組合獨特的?用於在24小時內查找不同數據的Oracle SQL語法時間段

表名:LOGIN_HISTORY

Name   Null  Type    
------------ -------- ------------------ 
ID   NOT NULL NUMBER(19)   
DATE_CREATED   TIMESTAMP(6)  
USER_NAME    VARCHAR2(255 CHAR) 

回答

1

如果您想選擇每天不同的用戶,選擇天,用戶,使他們獨特與DISTINCT關鍵字:

select distinct trunc(date_created), user_name 
from login_history 
order by trunc(date_created); 
+0

對於許多用戶,date_created的數據類似2014-04-08 01:39:11.684000。當我運行你的建議時,它會比2014-04-08更好地濾除它。 – c12 2015-02-07 19:59:42

+0

我不明白。它過濾掉重複。如果在2014年4月8日你有1000個不同的用戶,它會告訴你這些1000個用戶2014-04-08,無論他們是登錄一次還是一天100萬次。這不正是你要求的嗎? – 2015-02-07 20:04:13

+0

此查詢返回16個記錄從login_history where trunc(date_created)= to_date('08 -APR-2014','DD-MON-YYYY')select distinct user_name 但當我運行select distinct trunc(date_created)時,user_name 從login_history開始,它僅返回08-APR-2014的一行。每天有多個用戶登錄。我只想知道每天在表中給定日期範圍或整個範圍內登錄的不同用戶。其他一些日子會返回多個記錄,但如果手動驗證,它永遠不會匹配正確的記錄數。 – c12 2015-02-07 20:16:14

0

「超過24 小時的時間誰已登錄在每個用戶不同的用戶名」

爲什麼不使用DISTINCT? 「

」我怎麼會動態地運行多年?「

通過在WHERE子句中的日期過濾:

select distinct trunc(date_created) as login_date 
     , user_name 
from login_history 
where date_created >= to_date('&&start_date', 'DD-MON-YYYY') 
and date_created < add_months(to_date('&&start_date', 'DD-MON-YYYY'),12) 
+0

該查詢是好的,但我將如何運行一年動態? – c12 2015-02-07 19:45:33

相關問題