当前位置: 首页 > 面试题库 >

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

赏夕
2023-03-14
问题内容

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

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

这行得通,除了我还要数月不存在任何记录的计数。

谁能提供有关如何实现此目标的建议/建议?


问题答案:

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



 类似资料:
  • 问题内容: 由于上次我并未真正提出正确的要求,因此我尝试对此问题进行一些细化。我本质上是在做这个查询: 其中## / ## / 是同一天。本质上,此查询旨在查找任何给定日期的“未结”订单数。唯一的问题是,我想在一年或一天的每一天中都这样做。我想如果我知道如何将## / / ####定义为变量,然后将计数按该变量分组,那么我可以使它起作用,但我不确定如何做到这一点- 或在那里也可能是另一种方式。我目

  • 问题内容: 我有一张表,叫他们 我需要和每月的记录。 因为Aria和Brian每月收入只有Belle&Ziya1个,而Chloe每月收入只有2个。因此,在部门BB中,只有1即Aria,而部门CC为0,因为Chloe&Ziya。 这是我的意思是示例输出: 问题答案: 请尝试以下操作: 请在 此处 找到db <> fiddle 。

  • 问题内容: 我正在尝试计算一个月内某个产品的总销售额,但是我希望它包括所有“空”月(无销售),并且只选择最近的12个月。 到目前为止,这是我的代码。 这返回 但我希望它能回来。 我正在使用SQL Server 2008 R2 Sp1 问题答案: 在知道您有日历表之前,我已经做完了。我已经习惯了连续十二个月(包括当前)。

  • 问题内容: 我写了一个查询以获取用户表中的按月记录,如下所示 输出: 预期产量: 即使数据不存在,我也需要显示记录。这个怎么做? 问题答案: 关于效率,我不会说太多,因为我没有针对其他方法进行过测试,但是如果没有临时表,这似乎是一个不错的选择。 如果您基于日期格式进行并集,甚至可以减少工作量和查询负担。 两个查询的实时演示。

  • 问题内容: 我有一个供用户使用的表,该表具有一个名为“ created”的字段,该字段具有注册日期。 如何获得包含过去12个月每月注册数量计数的列表?像这样: 我不习惯使用mysql,所以直到现在,我只知道如何计算去年的注册数量,而不是如何按最近12个月的数量进行分组。提前致谢! 更新 现在,我使用@fthiella解决方案来得到这个: 我如何强制查询给我计数为0的月份? @fthiella解决方

  • 问题内容: 我已经搜索了此内容,但是所有类似的问题和答案都完全不同,无法正常工作。 我有一个包含以下字段的表格:人,事物,purdate。当某人购买每件新东西时,将输入一条新记录。 我想计算一个人连续购买了“事物”(thing01或thing02,没有关系)的月份。如果连续的休息日休息,则应重新开始计数。 封闭数据后,我想得出以下结论: 我知道我可以得到一个不同的人员列表,extract(purd