問題タブ [generate-series]
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 - postgres のテーブルにまだないすべての整数を選択します
テーブルにいくつかの ID がありますが、間にギャップがあります。これらのギャップを選択したい。
たとえば、私のテーブルの整数は次のとおりです。
そして、私は選択したい:
私の PostgreSQL のバージョンは 9.1.1 なので、int4range を使用できません。
sql - 選択クエリを使用してpostgresでシリーズに参加する
これら 2 つのクエリを結合する (またはこれら 2 つを一緒に実行する) 方法を探しています。
このクエリでは:
次のように50行を取得する方法:
私は数日間それに取り組んできましたが、それを理解することはできません. どんな助けでも素晴らしいでしょう。
sql - 2015 年と 2016 年の ISO 規格に基づくと、各月は何週ですか?
今年の 2014 年は次のとおりです。
任意の年についてこれを計算する方法は?
postgresql - generate_series に参加して数える
毎月、アクション A またはアクション B を実行した # ユーザーを見つけようとしています。
表: ユーザー - id - "creationDate"
表: action_A - user_id (= user.id) - "creationDate"
表: action_B - user_id (= user.id) - "creationDate"
私がやろうとしていたことの一般的なアイデアは、月 X にアクション A を実行したユーザーのリストと、月 X にアクション B を実行したユーザーのリストを見つけて、毎月の ID の数を数えることでした。毎月の日付の generate_series に基づいています。
私は次のことを試しましたが、実行中にクエリがタイムアウトし、それを最適化する方法があるかどうか (またはそれが正しいかどうか) はわかりません。
コメント/ヘルプは非常に役立ちます!
sql - 行を選択し、異なる ID で n 回挿入します
x
テーブルの最初の行を選択し、その行数を同じテーブルに挿入するスクリプトを Postgres で作成しようとしています。
ここに私が持っているものがあります:
上記は明らかに機能しません。
postgresql - generate_series を使用してテーブルを作成する
Amazon Redshift ではgenerate_series()
、リーダー ノードでサポートされているようですが、コンピューティング ノードではサポートされていないようです。generate_series を使用してリーダー ノードにテーブルを作成し、それを計算ノードにプッシュする方法はありますか?
このクエリは正常に実行され、リーダー ノードで実行されます。
ただし、次のクエリは失敗します。
私が今思いつく唯一の解決策は、クエリの結果を別のプログラム (python など) に取り込み、その結果をデータベースに挿入することですが、それはハックのようです。
redshift を使用したことがない方のために説明すると、これは postgresql を大幅に変更した変種であり、独自の特異性がたくさんあります。以下のクエリは完全に有効で、正常に実行されます。
収量:
この問題は、redshift でのリーダーノードのみの機能と計算ノード機能の違いに起因します。クエリのバグによるものではないと確信しています。
sql - 1 週間あたりの総レコード数
Postgres 9.1 データベースがあります。(特定の日付範囲で) 1 週間あたりのレコード数を生成し、それを前年と比較しようとしています。
シリーズを生成するために使用される次のコードがあります。
ただし、カウントされたレコードを生成された日付に結合する方法がわかりません。
したがって、例として次のレコードを使用します。
私はレコードを次のように返したいと思っていました:
サブサーチで日付範囲を参照する方法がわかりません。ご協力ありがとうございます。
postgresql - 単純なハッシュ結合クエリと複雑なソート/マージ クエリを実行するにはどうすればよいですか?
実行中のプロセスに関する情報をログに記録するシステムがあります。実行中の各プロセスには、並行して実行される場合と実行されない場合がある一連のステップが含まれています。システムは、プロセスとそのステップに関する情報を 2 つの別々のテーブルに記録します。
このpid_step
表には、各ステップに関するリソース使用量の統計が多数含まれています。ここではmem
、そのステップに割り当てられたメモリのバイト数を記録する列として簡略化しています。おそらく5秒間隔で、プロセスラベルごとにメモリ割り当てをサンプリングしたいので、それをプロットできます。次のような結果が必要です。
ログには、5 秒間隔でのリソース使用量のサンプルではなく、各プロセスとステップの開始と終了のタイムスタンプしか表示されないため、5 秒間隔ごとに実行されていたプロセス ステップを特定する最も効率的な方法を見つける必要があります (目盛り)。次に、割り当てられたメモリを集約します。私は 3 つの別々の試行を行いましたが、パフォーマンスのレベルは異なりますが、すべて同じ結果が得られました。簡潔にするために、各クエリとその説明プランを要点 ( https://gist.github.com/anonymous/3b57f70015b0d234a2de ) に入れますが、それぞれのアプローチについて説明します。
これは私の最初の試みであり、間違いなく最も直感的で保守が簡単です。個別のプロセス ラベルを で交差結合して、ラベル
generate_series
ごとに 5 秒の目盛りを生成し、pid
およびpid_step
テーブルで左結合します。左結合は「ゼロ フィル」効果を作成し、関連付けられたデータを持たないティックを削除しないようにします。残念ながら、このアプローチは最悪のパフォーマンスを示します (以下のベンチマーク リンクを参照)。これは、between t2.start_time and t2.end_time
述語が結合条件ではなく結合フィルターとして処理されるハッシュ結合の使用によるものだと思います。これは私の 2 回目の試みであり、パフォーマンスははるかに優れていますが、直感的で保守しにくいものです。「ゼロ フィル」アプローチは、クエリ 1 と同じです。ただし、 と の左結合を実行する前
pid
にpid_step
、最大プロセス経過時間とプロセス ステップの開始時間と終了時間に基づいて、関連付けられたデータを持つティックを事前に計算します。 . これにより、ティック述語とラベル述語の両方を結合条件として表現でき、結合フィルターを使用しないソート/マージ結合が可能になります。これは私の最後の試みであり、クエリ 2 とほぼ同じ直感性と保守性で最高のパフォーマンスを発揮します。ここでの最適化は、最大プロセス経過時間よりも小さいことが保証されている最大プロセス ステップ経過時間を使用することです。 CTE t3 の開始時にネストされた小さなループ。
理想的には、SQL をクエリ 1 と同じくらいシンプルで保守しやすいものにしたいのですが、クエリ 3 と同じように実行できます。パフォーマンスを向上させるインデックスやクエリ 1 のわずかな書き直しの方法でできることはありますか?
ベンチマーク結果: http://i.imgur.com/yZxdQlM.png
sql - 指定されたサンプリング時間で集計データをクエリする
私の生データが次のとおりであるとします。
サンプル時間が 1 秒の場合、出力データは次のようになります (列を追加します)。
からの変化からのサンプリング単位1 second, 5 sec, 1 minute, 1 hour, 1 day, ...
Railsを使用してPostgreSQLデータベースでサンプリングされたデータをすばやくクエリする方法は?