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

SQLサブクエリ-最小値を見つける方法

    より効率的なアプローチは、一般的に分析関数を使用することです

    SELECT hospitalcode,
           name,
           ward,
           annualbudget
      FROM (SELECT h.hospitalcode,
                   h.name,
                   w.wardno,
                   w.annualbudget,
                   rank() over (order by w.annualbudget asc) rnk
              FROM hospital h
                   JOIN ward w
                     ON (h.hospitalcode = w.hospitalcode))
     WHERE rnk = 1
    

    ただし、サブクエリを使用することもできます

    SELECT h.hospitalcode,
           h.name,
           w.wardno,
           w.annualbudget
      FROM hospital h
           JOIN ward w
             ON (h.hospitalcode = w.hospitalcode)
     WHERE w.annualbudget = (SELECT MIN(annualbudget)
                               FROM ward)
    

    最低予算で結ばれている病棟が複数ある場合、これらのメソッドは両方とも複数の行を返します。分析関数メソッドでは、row_numberを使用できます。 rankではなく関数 毎回正確に1行を返したい場合は、任意にタイを解除します。



    1. 行がPostgreSQLに存在するかどうかを最速でチェック

    2. C#の場合にOracleCommandのCommandTextにセミコロンを配置できなかった理由

    3. 1つの値について複数の列をチェックする

    4. Oracleデータベースからランダムにレコードを取得するにはどうすればよいですか?