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

平均化しながら1つのテーブルに3つのクエリを結合するmysqlクエリ

    Hour() 一日しか見ていないので、これには便利な機能のようです。おそらく、このようなものがあなたのために働くでしょう:

    SELECT * FROM
     (SELECT HOUR(time) hour, avg(ph) AS avg_ph
      FROM ph 
      WHERE time >= NOW() - INTERVAL 1 DAY
      GROUP BY hour) p
    JOIN 
     (SELECT HOUR(time) hour, avg(temperature) AS avg_temp
      FROM temperature1 
      WHERE time >= NOW() - INTERVAL 1 DAY
      GROUP BY hour) t ON t.hour = p.hour
    JOIN 
     (SELECT HOUR(time) hour, avg(solids) AS avg_solids
      FROM solids 
      WHERE time >= NOW() - INTERVAL 1 DAY
      GROUP BY hour) s ON s.hour = p.hour;
    

    内部結合を使用しているため、1時間に各テーブルに少なくとも1つのレコードが常に存在することを前提としていますが、それは妥当な前提のようです。




    1. ORA-907ASキーワード使用時に右括弧がありません

    2. mysqlバイナリ比較はインデックスを使用しません

    3. SQL ServerのFLOOR()の例

    4. mysql内の行を削除し、フォルダーから関連付けます