php - 如何按月获取总用户数mysql

标签 php mysql

如何通过按月分组来获取 mySQL 中的总用户数

我想列出按月分组的注册用户总数。

这方面的困难在于,如果任何月份都没有数据,我想计算一个范围内的所有月份,并且必须将其计数为 0。

我的代码

SELECT tots.*, @var := @var + tots.`count` as totalCount
  FROM (
     SELECT
        YEAR(registered) AS `year`,
        MONTH(registered) AS `month`,
        COUNT(*) AS `count`
     FROM user where id = 73
          AND registered >= '2017-01-01'
          AND registered <= '2017-05-01'
     GROUP BY `year`, `month`
  )
AS tots, (SELECT @var := 0) AS inc

当前输出

+------+-------+-------+-------------+
| Year | Month | Count | TotalCount  |
+------+-------+-------+-------------+
| 2017 | 01    | 1     | 1           |
| 2017 | 04    | 4     | 5           |
+------+-------+-------+-------------+

首选输出

+------+-------+-------+-------------+
| Year | Month | Count | TotalCount  |
+------+-------+-------+-------------+
| 2017 | 01    | 1     | 1           |
| 2017 | 02    | 0     | 1           |
| 2017 | 03    | 0     | 1           |
| 2017 | 04    | 1     | 2           |
| 2017 | 05    | 0     | 2           |
+------+-------+-------+-------------+

这里的 Count 是当月的新用户总数,TotalCount 是当月的总用户数。

NULL 结果是必需的。

如何在 mySQL 或 Laravel PHP 中实现该结果?

最佳答案

据推测,您每个月至少有一个用户注册。如果是这样,您可以使用条件聚合:

SELECT tots.*, (@var := @var + tots.`count`) as totalCount
FROM (SELECT YEAR(registered) AS `year`, MONTH(registered) AS `month`,
             SUM( id = 73 ) AS `count`
      FROM user 
      WHERE registered >= '2017-01-01' AND registered <= '2017-05-01'
      GROUP BY `year`, `month`
     ) tots CROSS JOIN
     (SELECT @var := 0) AS params;

否则,您需要一个日历表或一种每月生成一行的方法。

关于php - 如何按月获取总用户数mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45898159/

相关文章:

php - Doxygen 在记录 PHP 时出现奇怪的问题

php - 'Date' 中的未知列 'where clause'

java - Java Spring 中不同的 MySQL 引擎

python - 当数据库中有Python行时,PyMySql游标获取全部返回空

php - 如何从未输入某些日期的数据库表中创建 30 天的数据数组?

php - 按关联计数订购 DQL 连接

php - 从独立 PHP 服务器与 Google Cloud Bucket 交互

php - 我正在提交一个表单,其中包含一个包含 URL 字符串的字段,该字符串在表单提交和进入 MYSQL 数据库之间会丢失格式

php - $_SERVER ['PHP_SELF' 的问题]

php - 简单的 PHP 和 MySQL 问题 - COUNT