Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Dapatkan nilai Min dan Max dengan satu kueri MySQL dengan Group BY

Anda tampaknya menyimpan numerik nilai sebagai string. Anda benar-benar harus memperbaiki data. Tapi, Anda bisa memperbaiki kueri. Menurut pendapat saya, metode paling sederhana adalah konversi implisit:

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;

Perhatikan bahwa pressure dan condition tidak ada dalam GROUP BY , jadi nilai dipilih dari baris arbitrer. Ini adalah praktik yang sangat buruk, dan berarti kueri Anda tidak akan berfungsi di hampir semua basis data lain.

Anda dapat memperbaiki data dengan melakukan sesuatu seperti:

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

Saya menduga Anda ingin melakukan hal yang sama untuk pressure juga.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan antara partisi drop mysql dan partisi truncate?

  2. PILIH Dari Tampilan MySQL Dengan Klausa HAVING Mengembalikan Set Hasil Kosong

  3. MySQL :transaksi dalam prosedur tersimpan

  4. C# Eksekusi mysqlnonqueryasync tidak asinkron

  5. Kemunduran dalam kencan tanpa akhir pekan