問題タブ [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 テーブルがあります。
10 分刻みの増分ステップtb3
を持つ列を持つ3 番目のテーブルを生成する必要があります。がthenと同じでないtime_now
場合は、が埋められます。等しい (または に近い) 場合は、 に挿入されます。
例:tb1.time
tb3.time_now
b2.name
tb1.time
time_now
tb3
tb1
tb2
3 番目のテーブルは次のようになります。
これを達成する方法は?
sql - Join rows with fuzzy time data to regular time slots
I have PostgreSQL table that look like this:
With following query I am creating table with row_id's and time starting from 09:00 with increment every 10 minutes
After join I have new table which contain row's from table tb1 but only if time in tb1 have same time as one generated by '09:00'::time + '10 min'::interval * (g-1) AS time.
How to achieve that all rows with time from tb1 is "inserted" into generated table. If time generated is same than time from tb1 then no duplication should happen.
sql - generate_series を使用して過去 18 か月の合計と実行中の残高を選択する
私はこの作業クエリを持っていますが、その月にアイテムが販売されたかどうかに関係なく、結果にすべての月を追加する必要があります:
これは私に次のようなものを与えます:
2014-JAN
しかし、月も表示したい2014-MAR
ので、チャートの時間スケールが改善されます。
インターバルを行う方法は知っていますがgenerate_series(start_date, end_date, '1 month')
、このシリーズを上記の結果セットに結合する方法がよくわかりません。
最初の回答を受け入れましたが、2 週間のテストの後、問題が見つかりました。シリーズへの左結合と合体を追加して空の月に 0 を表示し、NULL を表示しないと、実行中のバランスに問題が発生します。
結果のクエリ:
私が得る結果:
でも私はしたい:
テーブル定義
年、月ごとのグループ化も行っているため、月に 1 行しかありません。ご覧のとおり、ビューには年、四半期、月、週、ダウの列があり、レポートを簡単に作成できます。
このための作業データを取得するために、必要に応じてそれを行うことができますが、手動で作成する必要があります。表を単純化し、すべての制約といくつかの列を省略しました。
sql - シリーズの連結行に基づいて表の行を挿入する
'user' と 'tracks' の 2 つのテーブルがあり、まだ 1 つも持っていない (userid=0) トラックごとにユーザーを作成したいと考えています。
ユーザーに必要な一意の電子メールがないため、generate_series を使用してダミーの電子メールを作成することを目指します。
もちろんエラーが発生します:
2 つの SQL 呼び出しを使用して、親コード (Python) にループを実行させることもできますが、それを行う正しい方法は SQL ステートメント内だけだと思います。
では、どうすれば Insert ステートメントを select を「ループ」させることができるでしょうか?
期待される出力:
sql - エンティティをキャストして PostgreSQL に設定する方法
Postgres 9.3 を使用すると、次のようなことができることがわかりました。
しかし、私はこれを行うことはできません:
何らかの方法で SELECT の結果をキャストしsetof int
て、結果の結果と同じように使用できgenerate_series()
ますか?
関数の結果を使用できるが、関数の結果を使用できないのはなぜSELECT
ですか?
sql - 日付範囲を個別の日付を持つ新しい行に変更する
name
、location
、start_date
、およびを含むテーブルがありますend_date
。対応する行情報をそのまま維持しながら、日付範囲を含むこれらの行を個別の日付の行に変換しようとしています。
例:
なります:
PostgreSQL 関数を使用して、これを新しいテーブルとして作成する必要があると思います。