Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận các giá trị Tối thiểu và Tối đa với một truy vấn MySQL với Group BY

Có vẻ như bạn đang lưu trữ số giá trị dưới dạng chuỗi. Bạn thực sự nên sửa dữ liệu. Tuy nhiên, bạn có thể sửa chữa truy vấn. Theo tôi, phương pháp đơn giản nhất là chuyển đổi ngầm định:

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;

Lưu ý rằng pressurecondition không nằm trong GROUP BY của bạn , vì vậy các giá trị được chọn từ các hàng tùy ý. Đây là một phương pháp thực sự tồi và có nghĩa là truy vấn của bạn sẽ không hoạt động trong hầu hết các cơ sở dữ liệu khác.

Bạn có thể sửa dữ liệu bằng cách làm như sau:

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

Tôi nghi ngờ bạn cũng muốn làm điều tương tự đối với pressure nữa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RuntimeError với mysql2 và rails3 (Bundler)

  2. MySQL SUM () đưa ra tổng số không chính xác

  3. Cách hiển thị ngày tháng ở định dạng iso 8601 với PHP

  4. Datetime NOW PHP mysql (biến thể + PDO)

  5. Id tài nguyên # 4 PHP MYSQL