2015-04-02 77 views
1

我有一個數據庫,其中包含一些測量位置的月降水量值。我的表的結構是:基於日期間隔的綜合值

describe pp_lunare; 
Field  Type  Null 
ID   int(11) NO 
DATA_OBS date  NO 
PLUTON  float  NO 
LEGHIN  float  NO 
DUMBRAVA float  NO 

我的數據的樣本:

ID DATA_OBS  PLUTON LEGHIN DUMBRAVA 
1 1977-01-01 14.4  33.3  25.1 
2 1977-02-01 18.7  12.9  13.2 
3 1977-03-01 32.8  26.7  18.3 
4 1977-04-01 109.6  123.8 140.6 
5 1977-05-01 98.5  104.7 59.9 
6 1977-06-01 192.9  172.8 66.6 
7 1977-07-01 101.4  85.8  79.4 
8 1977-08-01 116.4  103.3 105.7 
9 1977-09-01 54.5  47.4  51.8 
10 1977-10-01 23.6  15.6  11 
11 1977-11-01 59.7  44.3  29.7 
12 1977-12-01 28.7  13.1  10 

在我來說,我需要每3個月這樣的事情來獲得沉澱,每列的總和:

ID DATA_OBS  PLUTON LEGHIN DUMBRAVA 
1 1977-03-01 65.9  72.9  56.6 
2 1977-06-01 401  401.3  267.1 
3 1977-09-01 272.3  236.5  247.9 

等等...

感謝。

回答

0

你可以得到一個月的日期month(data_obs)它通過做這樣floor((month(data_obs) - 1)/3) as quarter有所收穫0宿舍3

例如一個月返回從1到12將它轉換爲一個值的四分之一,select data_obs, concat(year(data_obs), floor((month(data_obs) - 1)/3)) as quarter from pp_lunare;應該向您顯示原始日期和派生季度並排。

然後通過這個新的值組和總結其他地區:

select concat(year(data_obs), floor((month(data_obs) - 1)/3)) as quarter, sum(pluton), sum(leghin), sum(dumbrava) 
from pp_lunare 
group by quarter 
order by quarter; 

如果你想你的問題有確切的日期格式,你就必須做字符串操作的一點點(加1到上面的季度,乘以3,填充0,然後粘上日期的「-01」)。

+0

非常感謝你,似乎工作。 – julics 2015-04-02 15:01:55

0

您可以先獲取月份數據,然後將其轉換爲[季度],即從0到2. 然後,您可以創建三個臨時表格,給出[季度] = 0,1,2, 和最簡單和最後的部分將是在這些表格中添加第i行,結果將如下所示。你也可以有data_obs數據。

ID DATA_OBS PLUTON LEGHIN DUMBRAVA 1 1977年3月1日65.9 72.9 56.6 2 1977年6月1日401 401.3 267.1 3 1977年9月1日272.3 236.5 247.9