オラクルのOVER句
2023-07-26 11:43:54
質問
OracleのOVER句の意味は何ですか?
どのように解決するのですか?
この
OVER
節は、解析関数が動作するパーティション、順序、ウィンドウを指定します。
例1: 移動平均を計算する
AVG(amt) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
date amt avg_amt
===== ==== =======
1-Jan 10.0 10.5
2-Jan 11.0 17.0
3-Jan 30.0 17.0
4-Jan 10.0 18.0
5-Jan 14.0 12.0
日付順に並んだ行の上に、移動ウィンドウ(3行幅)で操作します。
例2:実行残高を計算する
SUM(amt) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
date amt sum_amt
===== ==== =======
1-Jan 10.0 10.0
2-Jan 11.0 21.0
3-Jan 30.0 51.0
4-Jan 10.0 61.0
5-Jan 14.0 75.0
現在の行とそれ以前のすべての行を含むウィンドウ上で動作します。
注意: アグリゲートで
OVER
節があり、ソート
ORDER
を指定すると、デフォルトのウィンドウは
UNBOUNDED PRECEDING
から
CURRENT ROW
というように、上の式を簡略化して、同じ結果になることがあります。
SUM(amt) OVER (ORDER BY date)
例3: 各グループ内の最大値を計算する
MAX(amt) OVER (PARTITION BY dept)
dept amt max_amt
==== ==== =======
ACCT 5.0 7.0
ACCT 7.0 7.0
ACCT 6.0 7.0
MRKT 10.0 11.0
MRKT 11.0 11.0
SLES 2.0 2.0
特定の部門のすべての行を含むウィンドウ上で動作します。
SQLフィドルです。 http://sqlfiddle.com/#!4/9eecb7d/122
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?
-
[解決済み】OracleでAUTO_INCREMENTでidを作成する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] SQL Server の VARCHAR/NVARCHAR 文字列に改行を挿入する方法
-
[解決済み] PostgreSQLで一重引用符で囲まれたテキストを挿入する
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について