【问题标题】:Mysql: Count records (including zero) per monthMysql:每月统计记录(包括零)
【发布时间】:2010-08-15 10:31:26
【问题描述】:

我正在尝试计算表中的记录并按日期对它们进行分组。我当前的查询如下所示:

SELECT
   count(*), 
   MONTH(time) as month,
   YEAR(time) as year
FROM
   myTable
GROUP BY
   month, year
ORDER BY
   year, month

这行得通,除了我还想计算没有记录存在的月份。

有人可以就如何实现这一点提供建议/建议吗?

【问题讨论】:

    标签: sql mysql group-by


    【解决方案1】:

    在 MySQL 中执行此操作的最简单方法是创建一个名为 months 的表,其中列出了您感兴趣的所有月份,并对表使用 LEFT JOIN。

    SELECT
       YEAR(time) AS year
       MONTH(time) AS month,
       COUNT(myTable.year) AS cnt, 
    FROM months
    LEFT JOIN myTable 
        ON months.year = myTable.year
        AND months.month = myTable.month
    GROUP BY months.year, months.month
    ORDER BY months.year, months.month
    

    但是,由于这主要是一个演示问题,通常只需像您已经在执行的操作一样运行查询并在客户端(例如 PHP)中转换结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多