代码之家  ›  专栏  ›  技术社区  ›  khelll

按周/月间隔的日期范围分组

  •  5
  • khelll  · 技术社区  · 14 年前

    我正在使用MySQL,我有下表:

    | clicks | int  |
    |   period  | date |
    

    我希望能够生成这样的报告,其中周期在过去4周内完成:

    |   period    | clicks |
    |  1/7 - 7/5  |  1000  | 
    | 25/6 - 31/7 |  ....  |
    | 18/6 - 24/6 |  ....  |
    | 12/6 - 18/6 |  ....  |
    

    或在过去3个月内:

    | period | clicks |
    |  July  |  ....  |
    |  June  |  ....  |
    | April  |  ....  |
    

    对于如何进行选择查询以生成等效的日期范围和单击计数,有什么想法吗?

    2 回复  |  直到 12 年前
        1
  •  12
  •   simendsjo    14 年前
    选择
    年的星期(`date`)作为期间,
    点击总数
    发件人` tablename`
    其中'date`>=curdate()-间隔4周
    逐周期
    
    选择
    月(`date`)作为期间,
    点击总数
    发件人` tablename`
    其中'date`>=curdate()-间隔3个月
    逐周期
    
    
        2
  •  3
  •   Keeper    14 年前

    过去3个月,您可以使用:

    SELECT MONTH(PERIOD), SUM(CLICKS)
    FROM TABLE
    WHERE PERIOD >= NOW() - INTERVAL 3 MONTH
    GROUP BY MONTH(PERIOD)
    

    或过去4周:

    SELECT WEEK(PERIOD), SUM(CLICKS)
    FROM TABLE
    WHERE PERIOD >= NOW() - INTERVAL 4 WEEK
    GROUP BY WEEK(PERIOD)
    

    代码未测试。