【问题标题】:date : group by month from day 2 to day 1 next monthdate :从下个月的第 2 天到第 1 天按月分组
【发布时间】:2012-04-03 20:48:50
【问题描述】:

我有这样的查询:

SELECT EXTRACT(MONTH FROM d.mydate) AS synmonth, SUM(apcp) AS apcptot
FROM t_synop_data2 d
WHERE d.mydate
BETWEEN '2011-01-01' AND '2011-12-31' 
AND d.idx_synop = '06712'
GROUP BY synmonth

此查询添加一个月内的所有降雨 (apcp),如下所示:

1   32.8  => from 2011.01.01 to 2011.01.31
2   27.2 => from 2011.02.01 to 2011.02.28
3   21.0
4   21.8
5   88.5
6   131.4
7   118.6
8   57.1
9   80.9
10  84.6
11  1.1
12  143.5 => from 2011.12.01 to 2011.12.31

这就是我想要的,但有一点不同。

这个区别是我必须从当月的第 2 天到下个月的第 1 天添加 apcp,然后返回类似上面的结果。

1   132.8 => from 2011.01.02 to 2011.02.01
2   27.2  => from 2011.02.02 to 2011.03.01
3   21.0
4   21.8
5   88.5
6   131.4
7   118.6
8   57.1
9   80.9
10  84.6
11  1.1
12  143.5 => from 2011.12.02 to 2012.01.01

我用 add_date()、extract() 或 date_format() 尝试了一些东西,但没有结果。

感谢您的回答 文斯

【问题讨论】:

    标签: mysql date group-by


    【解决方案1】:

    这里是查询:

    SELECT EXTRACT(MONTH FROM ADDDATE(d.mydate,-1) ) AS synmonth
    , SUM(apcp) AS apcptot
    FROM t_synop_data2 AS d
    WHERE ADDDATE(d.mydate,-1) BETWEEN '2011-01-01' AND '2012-12-31'
    AND d.idx_synop = '06712'
    GROUP BY synmonth
    

    您可以像这样添加两列来检查结果:

    SELECT EXTRACT(MONTH FROM ADDDATE(d.mydate,-1) ) AS synmonth
    , SUM(apcp) AS apcptot
    , MIN(d.mydate) AS date_min
    , MAX(d.mydate) AS date_max
    FROM t_synop_data2 AS d
    WHERE ADDDATE(d.mydate,-1) BETWEEN '2011-01-01' AND '2012-12-31'
    AND d.idx_synop = '06712'
    GROUP BY synmonth
    

    【讨论】:

      【解决方案2】:

      您可以按EXTRACT(MONTH FROM d.mydate - INTERVAL 1 DAY)分组

      SELECT EXTRACT(MONTH FROM d.mydate) AS synmonth, SUM(apcp) AS apcptot
      FROM t_synop_data2 d
      WHERE d.mydate
      BETWEEN '2011-01-01' AND '2011-12-31' 
      AND d.idx_synop = '06712'
      GROUP BY EXTRACT(MONTH FROM d.mydate - INTERVAL 1 DAY)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 1970-01-01
        • 2020-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多