簡體   English   中英

日期:從下個月的第 2 天到第 1 天按月分組

[英]date : group by month from day 2 to day 1 next month

我有這樣的查詢:

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() 但沒有結果。

謝謝你的回答文斯

這是查詢:

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

您可以按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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM