1. ホーム
  2. sql

[解決済み】Oracle「Partition By」キーワード

2022-04-03 08:19:25

質問

について、どなたか説明してください。 partition by キーワードの役割と簡単な動作例、そしてなぜこのキーワードを使いたいのかを教えてください。 他の人が書いたSQLクエリを持っているのですが、それが何をするものなのか理解しようとしています。

partition byの例。

SELECT empno, deptno, COUNT(*) 
OVER (PARTITION BY deptno) DEPT_COUNT
FROM emp

ネットで見た例では、ちょっと深入りしすぎのような気がします。

どのように解決するのですか?

その PARTITION BY 節では、各"GROUP"で使用されるレコードの範囲を設定します。 OVER 節があります。

例の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 ( SUM , AVG など)を、結果集合の集約(すなわち、一致するレコードの削除)を行わずに行うことができます。

を使用すると便利です。 LAST OVER または MIN OVER 関数を使用して、たとえば部署内の最低給与と最高給与を取得し、それをこのレコードの給与に対する計算で使用します。 なし を使用すると、より高速になります。

リンク先を読む AskTomの記事 をご覧ください。