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

Oracle:グループの最大値を取得しますか?

    分析関数を使用する傾向がある

    SELECT monitor_id,
           host_name,
           calibration_date,
           value
      FROM (SELECT b.monitor_id,
                   b.host_name,
                   a.calibration_date,
                   a.value,
                   rank() over (partition by b.monitor_id order by a.calibration_date desc) rnk
              FROM table_name a,
                   table_name2 b
             WHERE a.some_key = b.some_key)
     WHERE rnk = 1
      

    相関サブクエリを使用することもできますが、効率は低下します

    SELECT monitor_id,
           calibration_date,
           value
      FROM table_name a
     WHERE a.calibration_date = (SELECT MAX(b.calibration_date)
                                   FROM table_name b
                                  WHERE a.monitor_id = b.monitor_id)
      

    1. メモリ不足(50855936が割り当てられています)(50331646バイトを割り当てようとしました)

    2. mysql_real_escape_stringの欠点は?

    3. 範囲の最初の文字の場所を選択します(PostgreSQL)

    4. データベース内の複数の行から数量を削除する