問題タブ [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 - 任意の時間間隔で行をカウントする最良の方法
私のアプリには、Events
タイムスタンプ付きのイベントを含むテーブルがあります。
最新の各N
時間間隔でのイベントの数を報告する必要があります。さまざまなレポートの場合、間隔は「毎週」、「毎日」、「毎時」、「15分間隔」のいずれかになります。
たとえば、ユーザーは、毎週、1日、1時間、または15分ごとに受け取った注文の数を表示できます。
1)私の好みは、任意の時間間隔でグループ化する単一のSQLクエリ(Postgresを使用しています)を動的に実行することです。それを行う方法はありますか?
2)簡単ですが醜いブルートフォース攻撃の方法は、タイムスタンプでソートされた開始/終了時間枠内のすべてのレコードに対して単一のクエリを実行し、メソッドに任意の間隔で手動で集計を作成させることです。
3)別のアプローチは、間隔ごとにイベントテーブルに個別のフィールドを追加し、、、、およびフィールドを静的the_week
the_day
に格納することです。そのため、そのフィールドについてレポートするたびにではなく、レコードが作成されたときに(1回)「ヒット」を取得します。 。the_hour
the_quarter_hour
必要に応じてモデルを変更し、間隔データを事前に保存できるとすると、ここでのベストプラクティスは何ですか(ただし、テーブルの幅を2倍にするというわずかな費用がかかります)。
sql - 2 つのテーブルを結合して結合する
私は Postgres 9.1 を使用しており、データが存在しない場合でも複製したい 2 つの列を返すクエリがあります。私のクエリの重要な部分は
これにより、期待どおりにすべての機関とすべての interval_times が返されます。ここで、データのない行も必要です。次のようにして、一度にいずれかを取得できます
また
ただし、それらを組み合わせて、すべての機関のすべての interval_time を取得したいと考えています。interval_timeごとに繰り返される各institution_idを含むある種の中間テーブルを作成し、それをRIGHT JOINするのが最善のようですが、その方法がわかりません。どんな助けでも大歓迎です。
編集
少し遊んだ後、やりたいことは次のようですが、構文が間違っています
postgresql - sum と generate series が postgresql で機能しない
classification_indicator_id
列にはいくつかの数字があります。この数字を1日系列で合計したいと思います。クエリの下に書きました
しかし、私はいつも次のようなものを得ます:
私はそれが次のようなものであるべきだと確信しています:
sql - SQL は generate_series から選択し、user_id でフィルタリングするとシリーズが削除されますか?
generate_series と複数の結合を使用して、postgresql 9.2.4 に複雑な (私にとって) SQL クエリがあります。エクササイズ テーブルから特定の日のすべてのエクササイズの担当者を合計し、それらのエクササイズが現在のユーザーによって行われたワークアウトに属していることを確認する必要があります。最後に、そのテーブルをシリーズに結合して、欠落している日付を表示する必要があります (generate_series を使用)。
私の考えでは、from 句でシリーズを選択し、シリーズをサブクエリに結合して、エクササイズ テーブルとワークアウト テーブルの間の内部結合の結果を得ることを考えました。たとえば、次のクエリがあります。
これにより、次の出力が得られます。
ただし、特定の条件でフィルタリングしたい:
例えば。
しかし、上記の条件で WHERE 句をクエリに入れると、出力は次のようになります。
シリーズは消えます。
user_id でフィルタリングしてシリーズを保持するにはどうすればよいですか? どんな助けでも大歓迎です。
sql - postgresql で列に一連の月を生成する
postgresql で、'YYYY-MM' の形式で一連の月の日付を生成するにはどうすればよいですか?
sql - redshift で SQL 関数 generate_series() を使用する
redshift でシリーズ生成機能を使用したいのですが、うまくいきません。
redshift のドキュメントには、サポートされていないと書かれています。次のコードは機能します。
出力:
日付でも同じことをしたいと思います。次のようなさまざまなバリエーションを試しました。
キックアウト:
また試しました:
そして試しました:
両方がキックアウト:
そうでない場合は、別の投稿からこのコードを使用します。
sql - PostgreSQL の増分日付?
次のデータを含むデータベース テーブルがあります。
日付が欠落していることに注意してください: 2014-05-04
。次のクエリをどのように変更すればよいですか。
そのため、次の出力が得られます。
これは可能ですか?