問題タブ [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.

0 投票する
4 に答える
45 参照

sql - 表示する最新/最新のレコードのみを取得する

わかりました。レベルを表示する列と、その特定のレベルでプレイを停止したプレーヤーを表示する列があります。

これで、レベル5でプレイしたプレーヤーも、レベル4、3、2、1にリストされます。これは、まさに私が望んでいないことです。プレーヤーがレベル5までプレイした場合、レベル5の行でのみカウントされるようにします。

どうやってするか?

たとえば、これは私が得るものです:

これは私が欲しいものです:

920人のプレイヤーがレベル104に到達し(したがって、もちろんレベル101をプレイし)、そこで停止しました。1426人は、レベル101のみをプレイし、すでにそこで停止しました。しかし、結果として、レベル4に達した920は、レベル101の行にもカウントされます。

それを回避する方法は?

0 投票する
2 に答える
2137 参照

sql - Postgres ウィンドウ関数の構文

なぜ次のクエリを行うのですか:

select ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY time DESC) as rownum FROM users where rownum < 20;

次のエラーが発生しますか?

ERROR: column "rownum" does not exist LINE 1: ...d ORDER BY time DESC) as rownum FROM users where rownum < 2...

ウィンドウ関数で定義されているように、最初の 20 項目を取得するように、このクエリをどのように構成すればよいでしょうか?

user_idtimeは両方とも で定義された列usersです。

0 投票する
0 に答える
204 参照

sql-server-2008 - SQLサーバーでインデックスを作成できないビューにインデックスを作成するためのメンテナンスの少ない代替手段はありますか?

データは比較的静的であり、パフォーマンスが向上する可能性があるため、ビューにインデックスを付けようとしています。

「ランキングまたは集計ウィンドウ関数」が含まれているため、ビューにインデックスを付けることができません。そのための回避策はありますか?

このビューは、質問に対する学生の回答に試行回数を追加するだけであり、これはインデックス付きビューの完璧なシナリオだと思いましたが、SQL Server はウィンドウ関数を使用したビューのインデックスをサポートしていません。

キャッシュ テーブルを手動で生成することもできますが、これをメンテナンスの手間がかからないようにしたいので、そのようなことを覚えておく必要はありません。

たとえば、おそらく、ベーステーブルが変更されたときにビューをキャッシュテーブルに挿入する何らかのトリガー(トリガーに精通していません)を作成できます...これは基本的に、ビューのインデックスが行うべきことです(ただし、ベース テーブルのデータが変更されたときにインデックスを完全に置き換えるのではなく、インデックスを更新できるため効率が向上します)。

0 投票する
6 に答える
47044 参照

sql - CASEおよびGROUPBYを使用したピボットの動的な代替手段

私はこのようなテーブルを持っています:

そして、私はそれをこのように見せたいです:

私はこれを行うこのクエリを持っています:

これは非常に手間のかかるアプローチであり、作成する新しい列がたくさんあると扱いにくくなります。CASEこのクエリをより動的にするためにステートメントを改善できるかどうか疑問に思いましたか?また、これを行うための他のアプローチを見たいと思います。

0 投票する
3 に答える
6781 参照

sql - 自己からの値でPostgreSQLテーブルを更新します

テーブルの複数の列を同じテーブルの別の行の値で更新しようとしています。

タスクは、年齢が最も近いが、それ以上の年齢や同じ年齢ではない人の名前と誕生日をyounger_sibling_name入力することです。younger_sibling_dob

これは、相関サブクエリで使用するレコードを決定する値であるため、若い兄弟をdob簡単に設定できます(これはその例だと思いますか?):

name?を取得する方法がわかりません。
これの実際のクエリは、MAXの選択ごとに100〜500のグループで約100万行にわたって実行されるため、パフォーマンスが問題になります。

編集

多くの異なるアプローチを試した後、私はこれを決定しました。これは、中間結果でデータを検証でき、ロジックが何であるかの意図を示し、適切に実行できることのバランスが取れていると思います。

0 投票する
1 に答える
1700 参照

postgresql - 過去Xか月以内のPostgreSQL累積カウント

次の表があるとします。

各(user_id、month_d)ペアの過去6か月の累積カウントを照会したいと思います。私は次のJOINでそれを行うことができます:

しかし、これはウィンドウ関数で解決できるのだろうか?

サンプルデータ:

期待される結果(上記の結合から):

0 投票する
4 に答える
1895 参照

postgresql - 教義2でウィンドウ関数を使用できますか?

上記のクエリはpostgresqlにあり、DQLに変換したいのですが、DQLでウィンドウ関数のドキュメントが見つかりません。これはDoctrineでネイティブにサポートされていますか、それともカスタムdql関数を作成する必要がありますか?

0 投票する
3 に答える
337 参照

nhibernate - 休止状態とウィンドウ関数

NHibernate に Window 関数を使用させる方法はありますか?

具体的には、次のようなクエリを作成しようとしています。

Web を検索しましたが、ウィンドウ関数と NHibernate について何も見つかりません

具体的には、NHibernate の QueryOver インターフェイスを使用しています。

それが不可能な場合、コード内でデータベースの独立性を維持するために他にどのような解決策がありますか?

0 投票する
2 に答える
40122 参照

sql - PostgreSQL レコードを繰り返します。次の行からデータを参照するには?

私はPostgreSQLを初めて使用し、ここで関数を書くのは非常に困難です。だから、誰かが私がやろうとしていることをする方法を教えてくれることを願っています.

株価と日付の表があります。各エントリの前日からの変化率を計算したいと思います。データの最も早い日の場合、前日がないため、エントリは単純に Nil になります。誰かが私の関数を調べて、 a)
次の行からデータを参照する方法と
b) クリーンアップを手伝ってくれませんか?

WITHステートメントがステートメントの上にあるはずがないことは承知していIFます。しかし、論理的には、これが私がこれまで考えてきた方法であり、したがって私がそれを書いた方法です。それがどのように見えるべきかアドバイスできれば、それも非常にありがたいです。

PostgreSQL 9.2。