2015-04-02 99 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