Mysql:每月计算记录(包括零)

时间:2010-08-15 10:31:27

标签: sql mysql group-by

我正在尝试计算表格中的记录并按日期对它们进行分组。我当前的查询类似于以下内容:

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

这是有效的,除了我还想得到几个月没有记录的计数。

有人可以就如何做到这一点提出意见/建议吗?

1 个答案:

答案 0 :(得分:2)

在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)中转换结果。