Изменить для уточнения:
Это мой стол:
ID Datetime Date Temp
6043 2016-05-24 10:20:00 2016-05-24 19.3
6042 2016-05-24 10:15:00 2016-05-24 19.1
6041 2016-05-24 10:10:00 2016-05-24 19.1
6040 2016-05-24 10:05:00 2016-05-24 19.1
То, что я пытаюсь сделать, это выбрать строку с самым высоким «Temp».
Это мой запрос:
SELECT max(temp) as maxtemp FROM weatherdata WHERE day(date) = 24
Запрос только дает мне maxtemp, как я могу получить идентификатор и дату и время?
Цель состоит в том, чтобы получить максимальное значение для каждого дня в моей таблице (ГДЕ день (дата) = хх)
С уважением
Мне кажется, что вы пытаетесь получить всю свою 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`
Это даст вам подробные наблюдения. Обратите внимание, что если самая высокая температура наблюдалась более чем в одном наблюдении за месяц, вы получите их все.
Наконец, если вам нужно всего несколько месяцев, поместите это предложение WHERE прямо перед предложением ORDER BY.
WHERE `datetime` >= '2016-04-01
AND `datetime` < '2016-05-01 -- to get April 2016
Совет от профессионала: не используйте имена типов данных, например datetime
, как имена столбцов. Это затрудняет поиск вашей базы данных.
Других решений пока нет …