例如A表:
datetime     maxtemp     mintemp
1952-1-1     19          10.2
1952-1-2     18.5        9.7
...
2009-10-20   22.1        11.3如何根据当天日期查询历史上的今天的最高温度和最低温度? 譬如今天是10月20日,就自动查询到历史上的10月20日的最低温度多少度,发生在几年? 最高温度多少度,发生在几年:历史上今天:
最低温度    最低温度出现年份      最高温度    最高温度出现年份
17.1        1963                  27          2006

解决方案 »

  1.   

    select a.mi,year(b.datetime),a.ma,year(c.datetime)
    from 
    (SELECT DATE_FORMAT(CURDATE(),'%m-%d'),max(maxtemp) as ma,min(mintemp) as mi
    from tt group by DATE_FORMAT(CURDATE(),'%m-%d')) a
    inner join tt b on b.mintemp=a.mi
    inner join tt c on a.ma=c.maxtemp
      

  2.   

    postgresql?
    那你找相应函数替换上面的写法就可以了
    总体思路是不变的:先聚合然后再用内联接
      

  3.   

    datetime    maxtemp    mintemp 
    1952-1-1    19          10.2 
    1952-1-2    18.5        9.7 
    ... 
    2009-10-20  22.1        11.3 
    -----------------------------
    select datatime,
    (select max(maxtemp) from t where t.datatime = tt.datetime ) as max_temp,
    (select min(mintemp)  from t where t.datatime = tt.datetime ) as min_temp,from t tt;