【问题标题】:Get a monthly summary获取每月摘要
【发布时间】:2014-08-18 09:23:38
【问题描述】:

我有一个数据库表,其中包含一个表示初始订阅日期的列。 我想要一个查询来获取按月和年分组的两个特定日期之间存在的记录数。 可以请任何人帮助我。 这是此类表的一个示例。

CREATE TABLE objects(
id int primary key,
subscription_date date,
)

例如,我想计算从 2011 年 12 月 12 日到 2013 年 12 月 12 日每月存在的对象 知道之前统计的对象还存在,下个月必须重新统计,新日期订阅的新对象被加起来。

【问题讨论】:

  • 不清楚你的输出应该是什么样子。请添加示例值以及您期望从查询中得到什么输出。

标签: mysql sql database querying


【解决方案1】:

一种方法是创建日期列表并使用相关子查询或连接/聚合进行计算。假设您每月至少订阅一次,这里有一种方法:

select ym.yr, ym.mon,
       (select count(*)
        from objects o
        where year(o.date) = ym.yr and month(o.date) = ym.mon
       ) as cnt
from (select distinct year(date) as yr, month(date) as mon
      from objects
      where date between '2011-12-12' and '2013-12-12'
     ) ym;

【讨论】:

    【解决方案2】:

    一个月你可以这样尝试:-

    SELECT COUNT(val) 
    FROM objects
    GROUP BY MONTH(subscription_date);
    

    一年你可以这样尝试:-

    SELECT COUNT(val) 
    FROM objects
    GROUP BY YEAR(subscription_date);
    

    希望对你有帮助。

    【讨论】:

    • 这将要求 Ali 运行此查询 24 次并操作结果以获取“从 2011 年 12 月 12 日到 2013 年 12 月 12 日”的数据
    • 感谢您的帮助,对于我迟到的回复感到抱歉。我注意到这个问题可以通过数据仓库和数据挖掘技术轻松解决。
    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2013-12-20
    相关资源
    最近更新 更多