問題タブ [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 - 2 時間間隔の最小、最大、平均
以下のクエリでは、PostgreSQL を使用して 2 時間間隔の最小値、最大値、および平均値を計算しています。
クエリは偶数開始時間でも問題なく動作します(..04:00:00+05:30)
が、奇数開始時間の偶数開始時間と同様の結果が得られます(..05:00:00+05:30)
。2 倍すると偶数時間が返されますが、これが問題です。
奇数開始時間の出力 ('2012-10-23 01:00:00+05:30')
偶数開始時間の出力 ('2012-10-23 02:00:00+05:30')
sql - generate_series()でカウントクエリに参加し、Null値を「0」として取得します
を使用して1か月あたりのIDをカウントしたいgenerate_series()
。このクエリはPostgreSQL9.1で機能します。
これは私の出力です:
しかし、私が取得したいのは、この出力(1月の「0」値)です。
それにもかかわらず、ない月id
はリストされるべきです。
これを解決する方法はありますか?
サンプルデータ:
performance - PostgreSQL クエリの速度は可変です
環境
netflow データ (ルーターによって傍受されたすべてのパケット) を保持するテーブルがあります。このテーブルには、現時点で約 590 万行あります。
問題
1 日に受信したパケット数をカウントする簡単なクエリを試していますが、それほど時間はかかりません。
初めて実行したとき、クエリには88 秒かかり、2 回目の実行後は33 秒、その後のすべての実行で5 秒かかりました。
主な問題はクエリの速度ではなく、同じクエリを 3 回実行した後、速度が 20 倍近く速くなることです。query cache
の概念は理解していますが、元のクエリ実行のパフォーマンスは意味がありません。
テスト
結合に使用している列 (datetime) はタイプtimestamptz
であり、インデックスが付けられています。
EXPLAIN
ステートメントを見てください。実行の違いはNested Loop
.
VACUUM ANALYZE
まったく同じ結果のテーブルが既にあります。
現在の環境
- VMware ESX 4.1 で実行されている Linux Ubuntu 12.04 VM
- PostgreSQL 9.1
- VM には 2 GB RAM、2 コアがあります。
- データベースサーバーはこれに完全に専念しており、他に何もしていません
- 毎分テーブルに挿入します (毎分 100 行)
- 非常に低いディスク、RAM、または CPU アクティビティ
クエリ
最初の実行の説明 (88 秒)
3 回目の実行の EXPLAIN (5 秒)
sql - 複合キーを使用した SQL クエリの動的行生成
私の質問は 3 つの部分で構成されています。
最初の部分:
値に基づいて行を生成する方法はありますか?
例:
各家族に、家族の人数に基づいた数のバウチャーを提供したいと考えていfamily_members_count
ます。各バウチャーには一意の ID が必要です。
ベーステーブル:
結果:
第 2 部:
ticket_id 複合キーを制御できますか? voucher_id
はこうであってほしい
北 = 08 で、2 番目のサイクルにいる場合、次のようになります。
... 等々。
第 3 部:
MS Access 2010 SQL と PostgreSQL 9.1 SQL の両方でソリューションが必要です。
postgresql - PostgreSQLで2つの日付間の時系列を生成する
私はこのようなクエリを持っており、2つの指定された日付の間の一連の日付をうまく生成します:
2004-03-07
との間で162の日付が生成され2004-08-16
、これが必要です。このコードの問題は、2つの日付が異なる年のものである場合、たとえば、を試した場合など、正しい答えが得られないこと2007-02-01
です2008-04-01
。
より良い解決策はありますか?
regex - 文字数によるsplit_to_table()で、区切り文字なし
varchar
フィールドを設定された長さの行に分割する必要がありますが、区切り文字はありません。
例:
ファイルされた値:'Field example of varchar'
これを長さ5の行に分割したいと思います。結果は次のようになります。
私はこのクエリを試しました:
しかし、それは機能せず、5つの空の行を返します。
sql - DO ブロックで選択クエリを実行する方法は?
以下の SQL コードを MS SQL-Server から PostgreSQL に移植したいと考えています。
これは私がこれまでに持っているものです。
ご覧のとおり、レイズ通知機能を使用して「印刷」しようとすると、いくつかの問題が発生しました。しかし、私はGoogleでそれを解決することができました.
以前の経験から、CTE の Postgres 構文は非常に似ているため、CTE の前に再帰を追加するだけでよいことがわかります。そのため、唯一の本当の問題は、do ブロックが必要ないくつかの変数を定義する必要があることです。
この結果から、私が持っている簡単な質問が得られます:
do ブロックで選択クエリを「実行」するにはどうすればよいですか? pgAdmin3 の「データ出力」タブで結果を確認したいと考えています。
そして、関数を作成したくありません。
sql - generate_series() を使用して PL/pgSQL 関数を変更する
私は、generate_series()
日付/時系列の関数のバリアントをサポートしていない PostgreSQL 8.3 のバージョンに取り組んでいます。現時点では、次のような3番目の引数で関数を呼び出すこの醜い回避策があります。
の日数を決定するには、最後のパラメータを手動で計算する必要がありますgenerate_series()
。
関数呼び出しで 2 つの引数のみが必要になるように、このスクリプトを変更する最善の方法は何ですか?
このような関数に2つの引数を指定しただけで同じように動作するように以下のコードを変更する方法はありますか?
更新:以下の回答の素晴らしい提案の後にコードを変更しようとしましたが、まだいくつかのエラーがあります:
sql - postgresql でシリーズを生成するときに部分的な週を取得する
2013 年 3 月 1 日 00:00:00 から 2013 年 3 月 14 日 23:59:59 までの一連の日付を週単位で生成しようとしています。今までのクエリは次のようになります
出力:
ご覧のとおり、最初の 2 週間は返されますが、2013 年 3 月 11 日から 2013 年 3 月 14 日までの週が欠落しているため、クエリは部分的に機能します。終了していなくても最後の週を取得する方法はありますか?
sql - 特定の月の一連の週間隔を生成する
Postgres 9.1 データベースで、特定の月の一連の週を生成しようとしていますが、いくつかの制約があります。すべての週を月曜日に開始し、別の月に開始または終了するときにカットする必要があります。
例:
2013 年 2 月には、次のようなシリーズを生成したいと考えています。
私が今持っているクエリは次のようになります。
このクエリは最初の 4 週間を取得しますが、25 日からの 1 週間が欠落しています。最後の週を取得することは可能ですか?