Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erhalten Sie Min- und Max-Werte mit einer MySQL-Abfrage mit Group BY

Sie scheinen numerisch zu speichern Werte als Strings. Sie sollten die Daten wirklich korrigieren. Sie können die Abfrage jedoch korrigieren. Die einfachste Methode ist meiner Meinung nach die implizite Konvertierung:

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;

Beachten Sie diesen pressure und condition sind nicht in Ihrem GROUP BY , also werden Werte aus beliebigen Zeilen ausgewählt. Dies ist eine wirklich schlechte Vorgehensweise und bedeutet, dass Ihre Abfrage in fast keiner anderen Datenbank funktionieren würde.

Sie können die Daten reparieren, indem Sie Folgendes tun:

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

Ich vermute, Sie würden dasselbe für pressure tun wollen auch.