Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj wartości Min i Max za pomocą jednego zapytania MySQL z Group BY

Wygląda na to, że przechowujesz liczbę wartości jako ciągi. Naprawdę powinieneś naprawić dane. Ale możesz naprawić zapytanie. Moim zdaniem najprostszą metodą jest konwersja niejawna:

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;

Zwróć uwagę, że pressure i condition nie znajdują się w Twojej GROUP BY , więc wartości są wybierane z dowolnych wierszy. To naprawdę zła praktyka i oznacza, że ​​Twoje zapytanie nie zadziałałoby w prawie żadnej innej bazie danych.

Możesz naprawić dane, wykonując coś takiego:

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

Podejrzewam, że chciałbyś zrobić to samo dla pressure również.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql policz wystąpienia podciągu, a następnie uporządkuj według

  2. Pula połączeń C# MySQL

  3. Wstawianie do tabeli mysql i nadpisywanie wszelkich bieżących danych

  4. Używanie grup nieprzechwytujących w MySQL REGEXP

  5. Usuń wiersze sql, w których identyfikatory nie pasują do innej tabeli