0

私はこのようなクエリを持っています:

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

このクエリは、次のように1か月にすべての雨(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()で何かを試しましたが、結果がありませんでした。

答えてくれてありがとうヴィンス

4

2 に答える 2

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

次のように2つの列を追加することで、結果を確認できます。

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
于 2012-04-03T20:59:12.563 に答える
0

グループ化できます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)
于 2012-04-03T20:56:02.563 に答える