2011-03-14 76 views
3

我正在对天气数据库进行SQL查询,我需要wind_direction和windspeed。
这是我当期的查询:具有平均子查询的SQL查询

SELECT wind_direction, 
     windspeed 
    FROM weather 
    WHERE time >= curdate() and 
     time < (curdate() + interval 1 day) AND 
     windspeed > 0 
    ORDER BY wind_direction ASC 

这将删除所有值,其中风速= 0,将只显示今天的数据。

查询输出:

wind_direction windspeed 
0    10.1 
0    11.2 
23    7.6 
23    1.4 

正如你看到的,我得到重复的值,这是可以理解的,但我的图形系统不支持这一点,不知道要使用的值。
我需要的是一个独特的wind_direction和该方向的avg()风速。

回答

5
SELECT wind_direction, AVG(windspeed) 
FROM weather 
WHERE time >= curdate() and time < (curdate() + interval 1 day) 
     AND windspeed > 0 
GROUP BY 
     wind_direction 
ORDER BY 
     wind_direction ASC 

如果你想要一个wind_direction,比方说,与最大的平均速度,使用此:

SELECT wind_direction, AVG(windspeed) AS avg_speed 
FROM weather 
WHERE time >= curdate() and time < (curdate() + interval 1 day) 
     AND windspeed > 0 
GROUP BY 
     wind_direction 
ORDER BY 
     avg_speed DESC 
LIMIT 1 
+0

那是正确的,如何MySQL的知道哪些AVG(风速)使用时,组数据? – HyperDevil 2011-03-14 16:53:08

+0

@HyperDevil:来自'GROUP BY',它告诉哪些记录合并(在你的案例中共享相同的'wind_direction'值)。 – Quassnoi 2011-03-14 16:54:55

+0

但在选择中有多个wind_directions? – HyperDevil 2011-03-14 17:06:07