【问题标题】:Get the count of rows for each month in specific date range获取特定日期范围内每个月的行数
【发布时间】:2021-01-19 17:42:56
【问题描述】:

我在表A 中有记录列表,并且想要获取从本月第一天到当天的天数范围内的每个月的记录数。因此,如果我们有 3 个月并且当前日期是 19,那么对于第一个月,我需要计算当月 1 日到 19 日之间的记录,第二个月从 1 日到 19 日,依此类推。

id     time                 
1      2005-07-05 14:10:29
2      2005-07-12 15:47:35
3      2005-08-02 16:38:53
4      2005-08-04 10:48:12
5      2006-08-22 17:34:28
6      2006-09-01 22:11:35
7      2006-09-09 15:10:19
8      2006-09-06 21:55:56

想要的结果:

time       count
2005-07     2
2005-08     2
2006-09     3

我们忽略了记录 id 5,因为我们只计算每个月 1 日到 19 日之间的天数。

我该怎么做?

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    您可以使用函数DAY() 过滤行并聚合:

    SELECT DATE_FORMAT(time, '%Y-%m') yearmonth,
           COUNT(*) counter
    FROM tablename
    WHERE DAY(time) <= DAY(CURRENT_DATE)
    GROUP BY yearmonth
    

    请参阅demo
    结果:

    yearmonth counter
    2005-07 2
    2005-08 2
    2006-09 3

    【讨论】:

      猜你喜欢
      • 2021-01-08
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 2021-12-05
      • 2020-10-09
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多