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

Oracle SELECTTOP10レコード

    以下のように、現在のクエリをサブクエリに入れる必要があります:

    SELECT * FROM (
      SELECT DISTINCT 
      APP_ID, 
      NAME, 
      STORAGE_GB, 
      HISTORY_CREATED, 
      TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE  
      FROM HISTORY WHERE 
        STORAGE_GB IS NOT NULL AND 
          APP_ID NOT IN (SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') ='06.02.2009')
      ORDER BY STORAGE_GB DESC )
    WHERE ROWNUM <= 10
    

    Oracleは、結果が返された後、結果にrownumを適用します。
    結果が返された後に結果をフィルタリングする必要があるため、サブクエリが必要です。 RANK()関数を使用してTop-Nの結果を取得することもできます。

    パフォーマンスを上げるには、NOT EXISTSを使用してみてください。 NOT INの代わりに 。詳しくはこちらをご覧ください。



    1. MySQLでSUBSTRING()を使用する方法

    2. SQLServerのネストされたトランザクションでエラーを処理する方法

    3. ビデオコンテンツをSQLiteデータベース(ビデオパスではなく)に保存する方法

    4. Neo4jについて