問題タブ [window-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - PostgreSQLで名前付きウィンドウパーティション(エイリアス)を作成するにはどうすればよいですか?
PostgreSQLウィンドウ関数のドキュメントは、クエリの複数の場所で同じ名前のウィンドウを使用できることを示唆しているようです。しかし、名前付きウィンドウを作成する方法がわかりません。
これは私が取る構文を取得しようとしているジョーククエリですが、エラーが発生します:
エラー:ウィンドウ「w」は存在しません
performance - ビューでPostgresクエリをカプセル化すると、非常に遅くなります
Postgres 8.4 で約 5 秒で実行されるクエリがあります。他のテーブルに結合されたビューからデータを選択しますが、lag()ウィンドウ関数も使用します。
便宜上、単純な新しいビューを作成しました
そして、それから SELECT を行い、以前と同様に他のすべての JOIN とフィルターを使用します。驚いたことに、このクエリは 12 分以内に完了しません (その時点で停止しました)。明らかに、Postgres は別の実行計画を選択しました。そうしないようにするにはどうすればよいですか。元のクエリと同じプランを使用しますか? ビューが実行計画を変更するべきではないと私は思っていたでしょうが、どうやらそうです。
編集:さらに、最初のビューの内容を2番目のビューにコピーしても、まだ返されないことがわかりました。
編集 2: OK、計画を投稿するのに十分なほどクエリを単純化しました。
ビューの使用 (これは妥当な時間内に返されません):
ビューからウィンドウ関数を取り出し、クエリ自体に入れます (これはすぐに返されます)。
したがって、遅いケースでは、最初にすべてのデータにウィンドウ関数を適用してからフィルタリングしようとしているようです。これがおそらく問題です。なぜそうしているのかはわかりませんが。
sql - update ステートメントでのウィンドウ関数の使用
Django を介してアクセスする大きな PostgreSQL テーブルがあります。Django の ORM はウィンドウ関数をサポートしていないため、ウィンドウ関数の結果を通常の列としてテーブルに焼き付ける必要があります。私はこのようなことをしたい:
しかし、私は得るERROR: cannot use window function in UPDATE
誰かが別のアプローチを提案できますか? ウィンドウ関数構文を Django の .raw() メソッドに渡すのは適切ではありません。これは、必要な .filter() などの追加の ORM 機能をサポートしていない RawQuerySet を返すためです。
ありがとう。
sql - ウィンドウ関数でフィルタリングすると Postgresql になる
わかりました、最初はこれは私の友人との単なる冗談でしたが、興味深い技術的な質問になりました :)
次のstuff
表があります。
テーブルには、それぞれのボリュームと優先度 (必要な量) とともに、すべてのアイテムのレコードが含まれています。
指定された容量のバッグがあります1000
。バッグに入れることができるすべてのものをテーブルから選択し、最も重要なものを最初に詰めたい.
これはウィンドウ関数を使用する場合のように思われるので、私が思いついたクエリは次のとおりです。
ただし、問題は、Postgres が不平を言うことです。
このフィルターを削除すると、合計列が適切に計算され、結果が適切に並べ替えられますが、すべてのものが選択されます。これは私が望んでいるものではありません。
それで、どうすればいいですか?バッグに収まる商品だけを選ぶにはどうすればよいですか?
sql - 集計関数またはGROUPBY句のいずれにも含まれていないため、選択リストの列が無効です
以下にSQLクエリがありますが、実行すると問題が発生します。
しかし、私は次のエラーを受け取り続けます:
列'FloorId'は、集計関数にもGROUP BY句にも含まれていないため、選択リストでは無効です。
sql - rnの最大フィルター
ここでrnの最大値をフィルタリングする方法
そのファイリングの上rn = 1
フィルタリングしたいrn = max(rn)
signal-processing - ハミング ウィンドウとは何ですか?
フーリエ変換を行うコードを使用しています (オーディオ サンプルのケプストラムを計算するため)。フーリエ変換を計算する前に、ハミング ウィンドウをサンプルに適用します。
なぜこれを行うのですか?コードまたはオンラインでこれを行う理由が見つかりません。
sql - Oracle でのページクエリの速度
これは私にとって終わりのないトピックであり、何かを見落としているのではないかと思っています。基本的に、私はアプリケーションで 2 種類の SQL ステートメントを使用します。
- 「フォールバック」制限のある通常のクエリ
- 並べ替えおよびページ化されたクエリ
ここで、数百万のレコードを持つテーブルに対するいくつかのクエリについて話し、数百万のレコードを持つさらに 5 つのテーブルに結合します。明らかに、それらすべてを取得することはほとんど望んでいません。そのため、上記の 2 つの方法でユーザー クエリを制限しています。
ケース 1は非常に単純です。ROWNUM
追加のフィルターを追加するだけです。
Oracle の CBO はこのフィルターを実行計画に考慮し、おそらく操作を適用するため、これは非常に高速です(ヒントFIRST_ROWS
によって強制されるものと同様です。/*+FIRST_ROWS*/
ただし、ケース 2LIMIT ... OFFSET
は、他の RDBMS のように句がないため、Oracle では少し注意が必要です。したがって、「ビジネス」クエリを次のようにテクニカル ラッパーにネストします。
TOTAL_ROWS
フィールドは、すべてのデータを取得しなくてもページ数を知るために計算されることに注意してください。通常、このページング クエリは非常に満足のいくものです。しかし、ときどき (私が言ったように、500 万以上のレコードを照会するとき、おそらくインデックスなしの検索を含む)、これは 2 ~ 3 分間実行されます。
編集:ページングの前にソートを適用する必要があるため、潜在的なボトルネックを回避するのは簡単ではないことに注意してください!
LIMIT ... OFFSET
私は疑問に思っています、Oracleを含むの最先端のシミュレーションですか、それとも疑似列の代わりにウィンドウ関数TOTAL_ROWS
を使用するなど、設計により高速になるより良い解決策がありますか?ROW_NUMBER()
ROWNUM
sql - H2 Database は Aggregate 関数を使用して over 句の SQL クエリを作成できますか?
そのようなSQLのような
非常に便利です。
H2では、同様の機能をどのように実装するのだろうか? おそらく、Java プロシージャを作成するとうまくいくでしょう。しかし、この機能は H2 データベースのロードマップに組み込まれるのでしょうか?
mysql - over句に正しい構文を使用するMySql
mysqlでover句を機能させるための正しい構文は何ですか?
group by句でグループ化せずに、各ユーザーから送信されたSMSの合計を確認したいと思います。