Она смотрит на меня, как вы пытаетесь получить всю weatherdata
наблюдательный ряд для наблюдения, который содержит самую высокую температуру в любой конкретный месяц.
Это происходит в два этапа, как вы поняли. Первый шаг: найти максимальное наблюдение температуры в каждом месяце. Вы делаете это так:
SELECT MAX(temp) temp, LAST_DAY(`datetime`) month_ending
FROM weatherdata
GROUP BY LAST_DAY(`datetime`)
Хитрость здесь заключается в использовании LAST_DAY()
, чтобы выяснить, в каком месяце происходит каждое наблюдение. Он берет любую дату, дату или время, и указывает дату последнего дня своего месяца. Этот запрос дает вам набор результатов, содержащий один временной интервал в месяц, для самого высокого темпа в месяце. Попробуй. Убедитесь, что он работает для вас.
Далее, вы должны присоединиться к этому вашей детальной таблице наблюдения, например, так:
SELECT w.*
FROM weatherdata w
JOIN (
SELECT MAX(temp) temp, LAST_DAY(`datetime`) month_ending
FROM weatherdata
GROUP BY LAST_DAY(`datetime`)
) m ON w.temp = m.temp
AND LAST_DAY(w.`datetime`) = m.month_ending
ORDER BY w.`datetime`
Это даст вам подробные замечания. Обратите внимание, что если самая высокая температура произошла в течение нескольких наблюдений за любой месяц, вы получите их все.
Наконец, если вы хотите только несколько месяцев, поставить это ИНЕКЕ прямо перед ORDER BY п
WHERE `datetime` >= '2016-04-01
AND `datetime` < '2016-05-01 -- to get April 2016
Pro совет: не использовать имена типов данных, как datetime
, как имена столбцов. Это затрудняет работу с вашей базой данных.
_ «Но это не работает» означает что? Каков результат? Что вы ожидаете от выхода? Вы получили сообщение об ошибке? – Jeff
Я бы ожидал, что вы получите только результат _IF_, этот конкретный день является самым горячим в вашей базе данных. Это то, что вы ищете. – Jeff
Привет, Джефф, спасибо за ваш комментарий. Я не получаю никакого вывода в браузере, а также нет ошибки, так как мой администратор отключил это. Hmm ok к вашему второму комментарию, тогда, как я могу получить значения max и min? – droid