日期:2014-05-16  浏览次数:20661 次

用MYSQL根据同一个字段的值取他所对应的值前3个对应的是value平均值
比如一张表,date type value  
  199203 a 23  
  199206 a 12
  199209 a 13
  199212 a 14
  199303 a 34
  199201 b 3
  199202 b 4
  199203 b 5
  199204 b 3
  199205 b 6
  199206 b 6
  199207 b 4
  199208 b 3
  199209 b 2
  199210 b 3 
  199211 b 6
  199212 b 3
  199301 b 7
  199302 b 5
  199303 b 6
用MYSQL写,怎样写能的出这样的结果
  date type value type1 value1
  199203 a 23 b 4
  199206 a 12 b 5
  199209 a 13 b 3
  199212 a 14 b 4
  199303 a 34 b 6

也就是value1 的当date=199203 的时候 value1的值 等于type=b date=199201,199202,199203 的value 平均值

------解决方案--------------------
SQL code
select  date,min(case when type='a' then value end),min(case when type='b' then value end)
from tb
group by date

------解决方案--------------------
select date ,type ,value, 'b' as type1, (select sum(value) from (select value from 比如一张表 where type='b' and date<t.date order by date desc limit 3 ) a) as value1
from 比如一张表 t
where type='a'

试试这个,未经测试。