sql >> Database >  >> RDS >> Mysql

Krijg Min- en Max-waarden met één MySQL-query met Group BY

U lijkt numeriek op te slaan waarden als tekenreeksen. Je moet echt de gegevens repareren. Maar u kunt de query repareren. Naar mijn mening is de eenvoudigste methode impliciete conversie:

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;

Merk op dat pressure en condition staan ​​niet in uw GROUP BY , dus waarden worden gekozen uit willekeurige rijen. Dit is echt een slechte gewoonte en het betekent dat uw zoekopdracht in bijna geen enkele andere database zou werken.

U kunt de gegevens herstellen door iets te doen als:

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

Ik vermoed dat je hetzelfde zou willen doen voor pressure ook.




  1. Uitvoeringstijd van PostgreSQL-query ophalen

  2. Problemen met MySQL-prestaties identificeren met trage zoekopdrachten

  3. Hoe veel rijen samen te voegen met dezelfde id in sql?

  4. Hoe de gekoppelde server voor SQL Server 2008 te maken waar we de database van 2000 en 2005 hebben?