我有一个数据库,其中包含某些测量位置的月降水量值。我桌子的结构是:
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 :(得分:0)
您可以使用month(data_obs)
从您的日期获取月份,该月份从1到12返回一个月。通过执行floor((month(data_obs) - 1)/3) as quarter
之类的操作将此值转换为该季度的值,以获得从0到3的季度
例如,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“为日期)。
答案 1 :(得分:0)
您可以先获取月份数据,然后将其转换为[quarter],即0到2。 然后你可以创建三个临时表给出[quarter] = 0,1,2, 简单和最后的部分将是在这些表中添加第i行,结果将如下所示。您也可以获得data_obs数据。
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