我正在尝试生成用户在特定时间范围内完成的活动的报告。
这是我的表名为“register”的结构,每次用户在网站上执行操作时,它都会在表中记录用户的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 :(得分:4)
SELECT COUNT(*), iduser
FROM register
WHERE date>='$BeginningDate' AND date<'$EndDate'
GROUP BY iduser
ORDER BY COUNT(*) DESC
LIMIT 10
请注意,如果&#34;前10&#34;中的多个用户的计数相同,则只需要前10个。如果您想要更复杂的内容,则必须考虑额外的修改