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句が表示されず、ウィンドウ範囲が同時に指定されていない場合、デフォルトのウィンドウ範囲は最初の行から最後の行までです。