sql >> データベース >  >> RDS >> Mysql

GroupBYを使用した1つのMySQLクエリで最小値と最大値を取得します

    数値を保存しているようです 文字列としての値。あなたは本当にデータを修正する必要があります。ただし、クエリを修正することはできます。私の意見では、最も簡単な方法は暗黙の変換です:

    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;
    

    圧力に注意してください およびcondition GROUP BYに含まれていません 、したがって、値は任意の行から選択されます。これは本当に悪い習慣であり、クエリが他のほとんどのデータベースで機能しないことを意味します。

    次のようにしてデータを修正できます:

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

    pressureについても同じことをしたいと思うでしょう 同様に。




    1. PDOMysqlを使用した正規表現

    2. MySQLでのRIGHT()関数のしくみ

    3. PostgreSQLでNULLを使用していなくても、ヘッダーでNULLビットマップを使用しますか?

    4. SQLiteFTS3テーブルの行IDを取得します