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

キーワードによるOracleパーティション

    PARTITION BY 句は、OVER内の各「GROUP」に使用されるレコードの範囲を設定します 条項。

    SQLの例では、DEPT_COUNT 従業員レコードごとに、その部門内の従業員数を返します。 (これは、empの名前を外しているようなものです。 テーブル; empのすべてのレコードを引き続き返します 表。)

    emp_no  dept_no  DEPT_COUNT
    1       10       3
    2       10       3
    3       10       3 <- three because there are three "dept_no = 10" records
    4       20       2
    5       20       2 <- two because there are two "dept_no = 20" records
    

    別の列があった場合(例:state )次に、その州の部門の数を数えることができます。

    これは、GROUP BYの結果を取得するようなものです。 (SUMAVG 、など)結果セットを集約せずに(つまり、一致するレコードを削除します)。

    LAST OVERを使用する場合に便利です またはMIN OVER たとえば、部門内の最低給与と最高給与を取得し、それをこのレコードの給与に対する計算に使用する関数 サブセレクト。これははるかに高速です。

    詳細については、リンクされているAskTomの記事をお読みください。



    1. SQLite LIKE

    2. oci_connect接続に失敗しました

    3. SQLServerのストアドプロシージャでテキストを検索する

    4. Oracleで行を削除する方法