ORACLEデータベース(6)-ウィンドウ関数

ORACLEデータベース(6)-ウィンドウ関数

ウィンドウ関数、別名分析関数、ウィンドウ関数、OLAP(データ分析)関数

集計関数:特定のルールに従ってデータをグループ化し、各グループの特定の状況を均一に分析し、各グループ化の結果の行を返します。
ウィンドウ関数:特定のルールに従ってデータをグループ化し、各グループの特定の状況を均一に分析します。每行数据返回一行结果

1つは、ウィンドウ関数の構文です。

分析関数名()over(分析句)

over作为开窗函数的标志

第二に、分析条項

グループ化(PARTITION BY)並べ替え(ORDER BY)ウィンドウ(ROWS)

3、ウィンドウ条件

前:前

以下:後で

電流:電流

アンバウンド:無制限

行:行

ROWS BETWEEN N PRECEDING AND N FOLLOWING -- 前面N行---- 后面N行
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW  -- 第一行 - 当前行
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING  -- 当前行 - 最后一行
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING -- 第一行 - 最后一行

三、分析機能

1集合クラス

SUM()、AVG()、MAX()、MIN()、COUNT()は、集計関数と同じ関数を持っています

1 PARTITION BY 默认窗口的作用范围是从每个组的第一行到最后一行

2 ORDER BY 默认窗口作用范围是从第一条到当前条

3 ORDER BY 分组内部排序,尽可能的按照顺序排,但是结果不一定完全按照内部排序结果

SUM()の例

SUM(列名)OVER([PARTITION] [ORDER] [ROWS])

--查询每天的营业额及周每日累计营业额
SELECT DATA_DT,AMT,SUM(AMT)OVER(PARTITION BY WEEK ORDER BY DATA_DT ASC) FROM BUSINESS; --  各组内的第一条到当前条

ここに画像の説明を挿入します
注意点

1)分析関数名には、分析する必要のあるコンテンツが含まれている必要があります
。2)分析句に厳しい要件はありません--- ROWSが表示されるときにORDERBYを付ける必要があります
。3)デフォルトのウィンドウ範囲を使用する場合、次のNは同じ値です(並べ替えに使用される値は同じです)含まれます
2ソートクラス

ROW_NUMBER:同じソート値を持つ行のランクは結合またはジャンプされません

ランク:同じソート値の行を並行してランク付けし、ジャンプします

DENSE_RANK:同じソート値で並列行をジャンプしないでください

使用法

ROW_NUMBER()OVER([PARTITION BY] ORDER BY)

查询每天的营业额并在整月范围内升序排列

SELECT DATA_DT,AMT,ROW_NUMBER()OVER(ORDER BY AMT) RN FROM BUSINESS; -- 不并列 不跳跃
SELECT DATA_DT,AMT,RANK()OVER(ORDER BY AMT) RN FROM BUSINESS; -- 并列跳跃
SELECT DATA_DT,AMT,DENSE_RANK()OVER(ORDER BY AMT) RN FROM BUSINESS; -- 并列不跳跃

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ROW_NUMBER 可以用来去除重复的行 完全重复和不完全重复(一般多条数据中除了日期不同其他均相同的行)

ウィンドウ関数の並べ替えに関する注意事項:
1)分子関数の名前にコンテンツを含めることはできません
。2)分析句にORDER BYを追加する必要があり、ウィンドウを指定できません。
3オフセットクラス

LAG():前方にオフセット

LEAD():後方にオフセット

使用法

使用法(例としてLAGを取り上げます):LAG(COL_NAME、[OFFSET]、[DEFVAL])OVER():数値を
取得するためにN行ずつ前方にオフセットしますCOL_NAME:分析するフィールド
OFFSET:オフセット-デフォルトのオフセットは1行です
DEFVAL:デフォルトの戻り値-デフォルトではnullが返されます。戻り値の型は、分析フィールドの型と同じである必要があります。

--查询每天的营业额以及前一天的营业额
SELECT DATA_DT,AMT,
       LAG(AMT,1,0)OVER(ORDER BY DATA_DT)
  FROM BUSINESS;

ここに画像の説明を挿入します

オフセットウィンドウ関数の注意点:
1)分析関数名には、分析するコンテンツが含まれている必要があり、他の2つのパラメーターはデフォルト設定できます
。2)ORDER BYを分析句に追加する必要があり、ウィンドウを指定できません。 。
3)これ以上のオフセット行では、デフォルト値が返されがある場合は
4)を書き込み、負の番号に許可されていないオフセット
5)デフォルトの戻り値のデータ型を解析フィールドと一致しなければなりません

4、まとめ

1ウィンドウ句を単独で表示することはできず、ウィンドウ範囲を指定できるの
は、並べ替え句がある場合のみです。2ORDER BYが表示され、ウィンドウ範囲が同時に指定されていない場合、デフォルトのウィンドウ範囲は最初の行からです。現在の行へ; sort句が表示されず、ウィンドウ範囲が同時に指定されていない場合、デフォルトのウィンドウ範囲は最初の行から最後の行までです。

おすすめ

転載: blog.csdn.net/c727657851/article/details/115015989