如何有效地计算用户在一个月内完成的操作数量?

时间:2012-09-23 15:49:41

标签: mysql

我有一个包含两个表的数据库:一个表列出了几个用户,另一个表列出了这些用户所做的每一个操作,执行操作的用户的ID以及操作的日期。

我正在尝试计算每个用户每个月所做的操作次数。我不确定如何有效地做到这一点:有人有任何建议吗?

2 个答案:

答案 0 :(得分:2)

使用MONTH()DATE然后GROUP BY MONTHUSER_ID中提取月份:

SELECT u.user_id, MONTH(a.date), COUNT(*) number_of_actions
FROM users u INNER JOIN actions a ON (u.user_id = a.user_id)
GROUP BY u.user_id, MONTH(a.date)

此外,如果用户操作跨越多年,并且您希望 2011年1月 2012年1月具有不同的计数,请按分组YEAR和MONTH

SELECT u.user_id, YEAR(a.date), MONTH(a.date), COUNT(*) number_of_actions
FROM users u INNER JOIN actions a ON (u.user_id = a.user_id)
GROUP BY u.user_id, YEAR(a.date), MONTH(a.date)

答案 1 :(得分:0)

如果@Joao Silva的答案太慢,您可以使用触发器或存储过程进行更新,在单独的表中的单独表中维护计数。如果基于磁盘的表太慢,则可以使用内存表并在服务器重新启动时重建它,或使用Redis实例来保留此信息。