2016-03-27 65 views
-1

什麼是sql查詢會告訴我用戶abc訪問網站(不管頁面)有多少天,以及第一次訪問和上次訪問的日期是多少?此任務的sql查詢是什麼以查找第一個和最後一個條目?

在下面的例子中,用戶abc2009-05-16和上次訪問3個不同的日子裏,第一次上2009-05-18

id - user - page - timestamp 
340 - abc - page1 - 2009-05-18 22:51:11 
339 - abc - page3 - 2009-05-18 22:40:01 
338 - abc - page3 - 2009-05-17 21:20:01 
337 - xyz - page2 - 2009-05-18 22:06:00 
336 - xyz - page1 - 2009-05-18 22:05:10 
335 - abc - page3 - 2009-05-17 20:50:12 
334 - abc - page3 - 2009-05-16 12:10:01 

謝謝時間戳(你可以使用更穩健的

回答

0

所以爲了得到這個,先把分鐘(時間標記),以獲得首次訪問 MAX(時間戳),以獲得最後一次訪問 和計數(不同(日期(時間戳))),以獲得總不同天訪問

SELECT min(date(timestamp1)) as FirstVisit, max(date(timestamp1)) as LastVisit, count(distinct(date(timestamp1))) as distinctDays from yourtablename 

編輯: - timestamp是MySQL中的保留關鍵字。所以改了它timestamp1

0

非常原油處理日期函數),但這裏有這樣的想法:

SELECT user,COUNT(*) as "# visits",MIN(LEFT(timestamp,10)) as "Oldest visit",MAX(LEFT(timestamp,10)) as "Most recent visit" 
FROM your_table 
group by 
user, LEFT(timestamp,10) 
+0

這意味着它的性能太差了? – EnexoOnoma

+0

不,只是您可以使用日期函數而不是「LEFT」來處理時間戳。 – Tym

+0

你的意思是像'year(\'timestamp \')'而不是'LEFT(\''timestamp \',4)'? – PerlDuck

1

請嘗試以下查詢:

Select count(*) as timeVisited, min(timestamp) firstvisit, max(timestamp) last 
From yourtablename 
Where user='abc' 
+0

這不會給出不同的日期,但總訪問次數。 – Naruto

+0

嗨,這個計數所有日期的頁數。不過,我想知道他訪問過這個網站的獨特天數。 – EnexoOnoma

+0

另外timestamp是mysql中的保留關鍵字 – Naruto

相關問題