問題タブ [postgresql-8.0]

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 投票する
1 に答える
62 参照

postgresql - PostgreSQL での最適化されたクエリ

次のレコードを持つ tracker という名前のテーブルがあるとします。

次の結果が必要です

このクエリを試しています

しかし、これは私だけを与えます

この記録。

しかし、すべての一意のレコード(change_id)が必要です

(a) max(取り込み日) AND

(b) 動詞列の優先度は (2 - 最初の優先度、1 - 2 番目の優先度、3 - 最後の優先度)

したがって、次の結果が必要です

効率的にクエリを実行するのを手伝ってください。

PS : 分散コンピューティングのセットアップで「配布キー」として設定するため、ingest_date のインデックスを作成しません。私はデータ ウェアハウスとクエリの初心者です。

したがって、TB サイズの DB をヒットするための最適化された方法を教えてください。

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

postgresql - Redshift PostgreSQL Distinct ON オペレーター

マルチタッチ アトリビューションを確認するために解析したいデータ セットがあります。データ セットは、マーケティング キャンペーンに反応したリードとそのマーケティング ソースによって構成されます。

各見込み客は複数のキャンペーンに対応でき、最初のマーケティング ソースと最後のマーケティング ソースを同じテーブルに取得したいと考えています。

2 つのテーブルを作成し、両方から select ステートメントを使用できると考えていました。最初のテーブルは、すべての人からの最新のマーケティング ソースを含むテーブルを作成しようとします (電子メールを一意の ID として使用)。

次に、重複排除されたメールを含むテーブルを作成しますが、今回は最初のソース用です。

最後に、単純にメールを選択し、最初と最後のマーケット ソースをそれぞれ独自の列に結合したいと考えました。

個別の on は redshift の postgresql バージョンでは機能しないため、誰かがこの問題を別の方法で解決するアイデアを持っていることを望んでいました。

編集 2/22: より多くの文脈のために、私は人々と彼らが反応したキャンペーンを扱っています. 各レコードは「キャンペーン レスポンス」であり、すべての人が複数のソースを持つ複数のキャンペーン レスポンスを持つことができます。人ごとに重複を排除し、最初に応答したキャンペーン/マーケティング ソースと、最後に応答したキャンペーン/マーケティング ソースの列をそれぞれ持つ select ステートメントを作成しようとしています。

EDIT 2/24: 理想的な出力は、email、last_source、first_source、date の 4 つの列を持つテーブルです。

最初と最後のソース列は、キャンペーン メンバー レコードが 1 つだけの場合は同じですが、キャンペーン メンバー レコードが 2 つ以上ある場合はすべて異なります。

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

postgresql - SAS to PostgreSQL(PADB) コード - 合計フィールド (存在する場合)

SQL に変換する必要がある SAS のコードに問題があります。通常、私はこれが非常に得意ですが、そうではありません。新しい課題に直面しており、これまでのところ、それを解決するための私のアイデアはすべて失敗しており、そうする正しい方法を見つけていません.

フィールドの名前に特定のパターンがある場合、それらのフィールドを合計する必要があるように、このリクエストに対してフィールドを動的に取得できる必要があります。

私のPostgreSQLのバージョンは8.0.2、PADB 5.3.3.1 78560です

したがって、テーブルには のようなフィールドがある場合とない場合がありますbas_txn_03cibc_vcl

' ' as bas_txn_03cibc_vclフィールドが information_schema テーブルに見つからない場合に出力し、見つかった場合に使用する関数を作成しbas_txn_03cibc_vclました。

しかし、コマンドを実行すると、UDF は PADB テーブルでは使用できないというエラーが表示されます。

「エラー: XX000: ユーザー定義の SQL 言語関数 "check_if_field_exists(文字の変化、文字の変化、文字の変化)" は、PADB テーブルを参照するクエリでは使用できません。」

現在、ストアド プロシージャを使用して新しいアプローチを構築していますが、ユース ケースが制限されます。フィールドを動的に選択する方法に関する他のアイデアはありますか?

関数:

そして、私はそれをこのように使用します

関数が '' を tot_txn_03AMX_AMXE として返すか、単に tot_txn_03AMX_AMXE... として返す場合、フィールドが存在しない場合にクエリがエラーを返さないようにすることが考えられます。

私が言ったように、これは機能していないため、新しい機能またはアプローチが必要です...