mysql - 如何有效地计算用户在一个月内的操作次数?

标签 mysql

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

我正在尝试计算每个用户每个月的操作次数。我不确定如何有效地执行此操作:有人有任何建议吗?

最佳答案

使用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 月 有不同的计数,请按两者 YEARMONTH 代替:

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)

关于mysql - 如何有效地计算用户在一个月内的操作次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12553752/

相关文章:

mysql - 在相关表上使用 sum() 时查询时间缓慢

mysql - 如何在 INSERT INTO 查询中同步数据库

mysql - 错误在哪里? (MySQL)

php - 整个网站显示为怪异字符

php - sql表中添加空白条目并刷新页面

mysql - 选择包含所有指定值的 id(通配符冲突问题)MariaDB

python - 如何管理数据库连接,尤其是在多线程的情况下

mysql - 什么会导致 InnoDB 表的单个 UPDATE 性能非常低?

mysql - 在 where 子句 mysql 中完全匹配 utf8 中的单词

MySQL 加载数据 Infile Null 和表达式