問題タブ [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 - SQL ウィンドウ関数を使用して集計のパーセンテージを計算する方法
テーブル内のさまざまなディメンションのパーセンテージを計算する必要があります。ウィンドウ関数を使用して分母を計算することで物事を単純化したいのですが、分子も集計でなければならないため、問題が発生しています。
簡単な例として、次の表を取り上げます。
d1 から個々の行のシェアを計算したいだけの場合、ウィンドウ関数は正常に機能します。
ただし、d1 から d2 の合計の全体的なシェアを計算する必要があります。私が探している出力はこれです:
だから私はこれを試します:
ただし、エラーが発生するようになりました。
これは、グループ化句でウィンドウ関数が考慮されていないと不平を言っているためだと思いますが、ウィンドウ化関数をグループ化句に入れることはできません。
これは、Postgresql 8.4 のフォークであり、同じウィンドウ機能を共有する Greenplum 4.1 を使用しています。Greenplum は相関サブクエリを実行できないことに注意してください。
sql - グループ化されたビューの ID 行を生成する
次のような行番号でビューを作成しようとしています:
行が重複してしまいました。SELECT DISTINCT
どちらも機能しません。何か案は?
トランザクション テーブル:
WP テーブル:
出力を表示:
sql - 要素番号付きの PostgreSQL unnest()
値が区切られた列がある場合、次のunnest()
関数を使用できます。
要素番号を含めるにはどうすればよいですか? すなわち:
ソース文字列内の各要素の元の位置が必要です。ウィンドウ関数 ( など) を試してみましたがrow_number()
、rank()
常に1
. ソース テーブルの同じ行にあるためでしょうか。
テーブルの設計が悪いことはわかっています。それは私のものではありません、私はそれを修正しようとしているだけです。
sql - ウィンドウ内の複数の行を分析関数で参照できますか?
次のテーブルがあるとします。
私はこのようなものを計算したいと思います:
各行の SUM は、後続の各行の値の合計に、後続の行と現在の行の値の差を掛けたものです。
私はこのようなものから始めることができます:
各行には、後続のすべての行の合計があります。しかし、さらに詳しく説明すると、次の疑似コードのようなものが本当に必要になります。
しかし、これは有効ではありません。そして、それが問題の核心です: 分析関数のウィンドウで複数の行を参照する方法はありますか? または、これにアプローチする別の方法はありますか?上記の例は考案されたものです。私は実際に、この問題につながった別の投稿ロールアップ クエリの興味深いパズルで遊んでいました。私はPostgresql 9.1でこれを試していますが、それに縛られていません。
sql - Postgresウィンドウ関数とgroupby例外
一定期間の累積結果としてユーザーの統計(利益/損失)を取得するクエリをまとめようとしています。
これが私がこれまでに持っているクエリです:
クエリが実行されます。ただし、結果は少し不正確です。その理由は、event
が複数のゲーム(異なるsp.payouts
)を持つことができるためです。したがって、ユーザーが異なる支払いのイベントで2つの結果を持っている場合(つまり、イベントごとに4つのゲームがあり、ユーザーは1つから£20、もう1つから£40を取得します)、上記は複数の行で表示されます。
明らかな解決策は、次のように修正するGROUP BY
ことです。
sp.payout
ただし、Postgresはそれを認識していないようでs.buyin
あり、集計関数内にあるため、これに不満を持っています。エラーが発生します:
列「sp.payout」は、GROUP BY句に含めるか、集計関数で使用する必要があります
UbuntuLinuxサーバーで9.1を実行しています。
私は何かが足りないのですか、それともこれはPostgresの真の欠陥でしょうか?
c# - C# の F# Seq.windowed に相当するものはありますか?
私は移動平均などの問題を扱ういくつかの C# コードに取り組んでいます。ここでは、List / IEnumerable を取得して、連続したデータのチャンクで作業する必要があります。F# Seq モジュールには、Sequence を取り込んで、連続する要素のチャンクのシーケンスを返す、windowed という優れた関数があります。
C# には、LINQ ですぐに使用できる同等の機能がありますか?
sql - 1 にランク付けされたすべての行を返す ROW_NUMBER および PARTITION クエリ
クエリに問題があります。最後の変更が記録された時間に基づいて結果をランク付けしたいと考えています。
ランキングはオール1を返します。
sql - 「order by」コンポーネントを持つウィンドウ関数を使用する場合の結果セットの順序付けは何ですか?
私はSEDEのクエリに取り組んでいます:
2 つのウィンドウ関数を考慮した結果セットの順序は?
未定義だと思いますが、決定的な答えが見つかりませんでした。over(order by ...)
OTOH、そのようなウィンドウ関数の1つを使用したクエリの結果は、句に従って順序付けられました。
sql - SQLのウィンドウ関数を使用した「一致」の累計
現在の行の前にある順序付けられたパーティションの部分に、現在の行のフィールドの値が表示される回数をカウントするウィンドウ関数を作成したいと思います。これをより具体的にするために、次のようなテーブルがあるとします。
そして、そのようなテーブルを作成したいと思います(わかりやすくするために日付列を省略しています)。
の場合、順序付けられたパーティションに沿って移動すると、最初のエントリ「apple」は何にも一致しませid = 1
ん(暗黙のセットが空であるため)、次のフルーツ「cherry」も一致しません。次に、再び「アップル」に到達します。これは一致などです。SQLは次のようになっていると思います。
しかし、私は正しく見えるものを見つけることができません。FWIW、PostgreSQL8.4を使用しています。
postgresql - PostgreSQL: 序数ランク (行インデックス?) を効率的に取得する
次のようなテーブルがあります。
dollars_rank
テーブルのランク列 (および) を更新してpoints_rank
、指定された ID のランクを設定するクエリが必要です。これは、関連する列で降順で並べ替えられたその ID の行のインデックスです。PostgreSQLでこれを行うにはどうすればよいですか?