Я хочу получить (в последнем ряду) среднюю температуру воздуха от всех станций с указанным номером страны.
Поэтому мое решение будет выглядеть примерно так:
SELECT AVG(air_temperature)
FROM weather
WHERE station_id IN (
SELECT station_id
FROM stations
WHERE county_number = 25
)
ORDER
BY id DESC
LIMIT 1;
Ясно, что это не дает правильную строку, поскольку возвращает среднюю температуру воздуха, основанную на всех значениях воздуха, когда-либо зарегистрированных на одной станции.
Возвращаясь к проблеме, я хочу получить среднюю температуру воздуха по последнему добавленному ряду для каждой станции с указанным номером страны.
Настольная погода
+------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| station_id | char(20) | YES | MUL | NULL | |
| timestamp | timestamp | YES | | NULL | |
| air_temperature | float | YES | | NULL | |
+------------------+-------------+------+-----+---------+----------------+
Настольные станции
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| station_id | char(20) | NO | PRI | NULL | |
| county_number | int(10) | YES | | NULL | |
+---------------+-------------+------+-----+---------+-------+
Таблицы свернуты