2015-10-22 2 views
0

Я не знаю, почему у меня это есть, но когда я пытаюсь получить min и max, я получаю неправильный ответ!Min и Max обратились в MySQL

Вот содержание этой дате:

enter image description here

А вот мой запрос MySQL:

SELECT min(`value`),max(`value`) FROM weather_data WHERE `date`="2015-10-22" AND `type`="temperature" 

Но ответ запроса MySQL заключается в следующем: http://puu.sh/kTr1q/af165a2dd9.png

У вас есть идея, почему у меня есть этот ответ?

+1

второе изображение такое же, как и первое – Alex

+1

Каков тип 'value'? Позвольте мне угадать - ЧАР? – Bohdan

+0

дерьмо, но я знаю, почему я получаю эту ошибку извините, это потому, что я использую, а не. для значения float –

ответ

0

Похоже, что value представлен в виде строки. Итак, счастливо, min() и max() работают правильно.

Если значения могут быть преобразованы в вашей системе, вы можете использовать:

SELECT min(`value` + 0), max(`value` + 0) 
FROM weather_data 
WHERE `date` = '2015-10-22' AND `type` = 'temperature'; 

+ будет делать бесшумное преобразование. Если минимальные и максимальные и возвращать 0, то запятые не распознается, поэтому заменить их с периодами:

SELECT min(replace(`value`, ',', '.') + 0), max(replace(`value`, ',', '.') + 0) 
FROM weather_data 
WHERE `date` = '2015-10-22' AND `type` = 'temperature'; 
1

Пожалуйста, обратите внимание, что у вас есть ИНЕКЕ в запросе. Что ваш запрос на самом деле делает выбор строки, где дата указанной даты (1 строка), а затем выбрать минимальные и максимальные значения из этой строки (фактические данные)

Правильный запрос будет выглядеть следующим образом:

ВЫБРАТЬ мин (value), не более (value) FROM weather_data WHERE type = "температура"

Пожалуйста, прочитайте другие сообщения, касающиеся типов данных тоже.

1

Вы должны изменить тип данных из строки на числовой тип: поплавок или десятичный.