2012-07-04 41 views
1

我正在嘗試生成用戶在特定時間範圍內完成的活動報告。獲取時間範圍內的頂級用戶MySQL

這是我的表的結構,稱爲「註冊」,每次用戶在網站上執行一個操作時,它都會在表中記錄用戶的ID,用戶所做操作的類型以及日期,這是由PHP函數time()提供的。該表是這樣的:

iduser | Action | Date 
82919 | 0  | 1339081680 
89754 | 5  | 1339084560 
88135 | 1  | 1339585320 
82919 | 0  | 1339083420 
26367 | 1  | 1349096510 

我用下面的查詢選擇的時間範圍內的記錄:

SELECT * FROM register WHERE date>='$BeginningDate' AND date<'$EndDate' ORDER BY date DESC 

這個查詢奇妙的作品,但我現在不知道是如何編寫除了生成屬於特定時間範圍的記錄列表之外的查詢,還將計算哪些是在該時間內具有更多記錄的前10位用戶。我曾嘗試編寫子查詢,但該主題超出了我目前的技能。

+0

COUNT和GROUP BY? –

+0

如果下面的回答是可以接受的,你能否把它標記爲答案?謝謝! – keelerm

回答

4
SELECT COUNT(*), iduser 
FROM register 
WHERE date>='$BeginningDate' AND date<'$EndDate' 
GROUP BY iduser 
ORDER BY COUNT(*) DESC 
LIMIT 10 

注意,如果計數是在「十大」多個用戶是相同的,這隻會如果你想更復雜的東西取前10,你必須要考慮額外的修改。

相關問題