1

我正在尝试生成用户在特定时间范围内完成的活动的报告。

这是我的表的结构,叫做“注册”,每次用户在网站上执行操作时,它都会在表中记录用户的 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 个用户. 我曾尝试编写子查询,但该主题超出了我目前的技能。

4

1 回答 1

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

请注意,如果“前 10 名”中的多个用户的计数相同,则只取前 10 个。如果您想要更复杂的内容,则必须考虑进行额外的修改。

于 2012-07-04T20:21:03.847 回答