Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenez les valeurs Min et Max avec une requête MySQL avec Group BY

Vous semblez stocker numérique valeurs sous forme de chaînes. Vous devriez vraiment corriger les données. Mais, vous pouvez corriger la requête. À mon avis, la méthode la plus simple est la conversion implicite :

SELECT MIN(`temp_min` + 0) AS `temp_min`,
       MAX(`temp_max` + 0) AS `temp_max`,
       `dt_txt`, DAYNAME(`dt_txt`) AS `dayname`,
       `pressure`, `condition`, `dt_txt`
FROM infoboard.forecasts
WHERE `dt_txt` >= CURDATE()
GROUP BY `dt_txt`
ORDER BY `dt_txt` ASC;

Notez que la pressure et condition ne sont pas dans votre GROUP BY , les valeurs sont donc choisies à partir de lignes arbitraires. C'est une très mauvaise pratique, et cela signifie que votre requête ne fonctionnerait pas dans presque toutes les autres bases de données.

Vous pouvez corriger les données en procédant comme :

alter table infoboard.forecasts
    modify column temp_min decimal(6, 3),
    modify column temp_max decimal(6, 3);

Je soupçonne que vous voudriez faire la même chose pour la pressure aussi.