4

有没有人知道如何查询 vbulletin 数据库以生成每月/每年注册数量的报告,以获得类似的结果。

MM/YYYY      Count
01/2001  :   10
02/2001  :   12
...
...

感谢下面的答案。我的最终版本如下:

SELECT 
  COUNT(*) as 'Registrations', 
  YEAR(FROM_UNIXTIME(joindate)) as 'Year',
  MONTH(FROM_UNIXTIME(joindate)) as 'Month'
FROM vbfuser
GROUP BY Year,Month
4

3 回答 3

7

我不熟悉 vBulletin 的数据库结构,但你应该这样做假设你的用户表有一个日期/日期时间/时间戳created_datereg_timestamp列或类似的东西,使用MySQL 的YEAR()MONTH()函数

select 
    count(*) as count, 
    year(reg_timestamp) as year 
    month(reg_timestamp) as month
from users 
group by year, month;

这将导致与此类似的事情:

+-------+-------+------+
| count | month | year |
+-------+-------+------+
|     4 |    11 | 2008 | 
|     1 |    12 | 2008 | 
|   196 |    12 | 2009 | 
|   651 |     1 | 2010 | 
+-------+-------+------+

编辑:关于 D​​ave 的评论: vBulletin 的日期似乎以 Unixtime 格式存储。在这种情况下,只需将列包装起来即可FROM_UNIXTIME将其转换为可读的 MySQL 日期:

select 
    count(*) as count, 
    year(from_unixtime(reg_timestamp)) as year 
    month(from_unixtime(reg_timestamp)) as month
from users 
group by year, month;
于 2011-02-18T10:29:55.137 回答
0

vBulletin 会保留每日统计数据,因此在该表之外工作可能会更好。计算新注册并不是什么大问题,但如果你想计算帖子,它最终会变得昂贵。这是一个执行您想要的示例的示例:

SELECT
    DATE_FORMAT(FROM_UNIXTIME(dateline), '%m/%Y') AS month,
    SUM(nuser) AS new_users
FROM stats
GROUP BY month
ORDER BY dateline
于 2011-03-02T15:13:56.863 回答
-1

您必须按字段月份分组:

select MONTHYEAR month , count(*) from tabname group by MONTHYEAR 

有了这个,您将阅读所有月份并计算不同的行,获得您需要的信息。

如果您提供用户表,它可能会有更多帮助;)

于 2011-02-18T10:32:35.803 回答