中国教程网《Photoshop专家讲堂》光盘热售参与论坛活动,快速赚取金币精品素材,中英文字体
发新话题
打印

请教巨难sql语句,在线等候高手指教。

请教巨难sql语句,在线等候高手指教。


每小时雨量表a:  
ID        降雨量        日期时间                      时最高温度        时最低温度  
-------------------------------------  
a001    12            02-10-21  08:00:00            20                      18.2  
a001    0              02-10-21  09:00:00            22                      21.1   
.  
.  
.  
a001    0.3          02-10-22  16:00:00            26                      25.2            
a002    9              02-10-21  08:00:00            17                      16.2  
.  
.  
.  
a002    0.1          02-10-22  16:00:00            25.8                  25.3  

表b:  
ID          地区        站名                           
a001      北京        天文台        
a002      北京        天安门        
a003      广州        天文台        
a004      广州        水利会        
.  
.  
.  
         

我需要获得的输出是:(请注意,日期时间输出仅输入时间)  

ID        站名      地区        日期                    日最高温度      日最低温度      日降雨量  
a001    天文台    北京      2002-10-20        26                      18.2              12.3  
a002    天安门    北京      2002-10-20        ..                            ..            ..  

我要统计每个站每天的最高温度和最低温度,日降雨量。  
最高低温度统计方法为取一天中最高最低值,降雨量取每小时加起来的总数  

还有就是统计北京的最高低温度和日降雨量,因为北京有两个站,取值方法为:高低温度取最高最低值,降雨量选最大值,即哪个站录得雨量最大就选哪个。  

还有统计全国地区,例如北部地区,南部地区,西部地区,东部地区,统计方法和城市统计一样。  





---------------------------------------------------------------  

SELECT  B.ID,B.站名,B.地区,CONVERT(CHAR(10),A.日期时间,120)  AS  日期,MAX(A.时最高温度)  AS  日最高温度,MIN(A.时最低温度)  AS  日最低温度,SUM(  降雨量)  AS  日降雨量  
FROM  A,B  
WHERE  A.ID=B.ID  
GROUP  BY  B.ID,B.站名,B.地区,CONVERT(CHAR(10),A.日期时间,120)  


题不够难(更不用说巨难),分不够高!!!  



---------------------------------------------------------------  

其实GROUP  BY  CASE  WHEN  取小时部分  >  20  then  加1天  ELSE  当天  END  CASE  

办法没有加小时的办法好,但也是个思路,扩展扩展视野,终究CASE使用要比较灵活一些,如果以上题目对时间的规则会变的更复杂的化只有用CASE才能达到目的

TOP

发新话题