2012-07-04 43 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,你必须要考虑额外的修改。

相关问题