問題タブ [lateral]
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 - レコードを返す関数への複数の呼び出しからテーブルを作成する
開始と終了のタイムスタンプに基づいて、データの範囲に対していくつかの基本的な統計を行う関数があります。
これは、次のような単純な単一選択でうまく機能します。
しかし今、別の関数を作成するのに問題があり、「cal」関数の複数の呼び出しを組み合わせることができる select ステートメントさえも作成できません。たとえば、3 つの期間を含むテーブルを返したいとします。したがって、戻り値は 4 列 x 3 行になります。
postgresql - セットを返す関数を含まないラテラルのユースケース
私は先日この投稿を読んでいました:
http://blog.heapanalytics.com/postgresqls-powerful-new-join-type-lateral/
投稿の主張のいくつかは正確ではないのではないかと思いました. これは特に:
「ラテラル ジョインがなければ、この分析を行うために PL/pgSQL に頼る必要があります。または、データ セットが小さい場合は、複雑で非効率的なクエリを実行できます。」
sum(1)
andアプローチは私には理想的とは言えず、order by time limit 1
この分析は横方向の左結合ではなく通常の左結合で実行できると考えました。だから私は概念実証を思いついた:
https://github.com/ajw0100/snippets/tree/master/SQL/lateral
README の私の結論は正しいですか? select...from...where
横方向に結合されたサブクエリを超える
と、ネストされたループが強制されますか? その場合、横方向は、ドキュメントが示唆するように、セットを返す関数でのみ有用ですか? セットを返す関数を含まないラテラルのユースケースを知っている人はいますか?
postgresql - CASE ステートメントを PostgreSQL の LATERAL JOIN と組み合わせる方法は?
関数には複数の OUT パラメータがあり、そのすべてが必要なため、選択行ごとに関数を数回呼び出す必要があります。
例えば
この関数を一度だけ呼び出すには、横結合を使用します
問題はa
nullable の場合です。func
null で呼び出されると例外をスローします。次に、結合なしで私はこのようにします
しかし、どうすればそれを実装できlateral joins
ますか? ラテラルジョイン内で CASE を使用する方法はありますか? または、プロシージャを一度だけ呼び出す他の方法はありますか?
hadoop - Hive で LEFT JOIN LATERAL を実行できますか?
Hive で LATERAL JOIN を実行したいと考えています。これをサポートする方法はありますか?本質的に、LHS の行の値を RHS の任意の SQL のパラメーターとして使用したいと考えています。
以下は Postgres の例です: (粗雑な例を許してください):
sql - ID または null で結合し、最初の結果を取得する
以下のクエリを作成しました。
サンプルデータ:
から取得したいのLEFT JOIN
は、NULL store_id (グローバル スケジュール エントリ - すべてのストア エントリに影響する) のデータ、または指定された store_id の実際のデータです。
このようにクエリを結合すると、正しい順序で結果が返されますが、NULL と store_id の両方が一致します。join 句で OR ステートメントを使用することは理にかなっています。
予想された結果:
現在の結果:
この件についてもっとエレガントなアプローチがあれば、喜んでそれに従います。
sql - Postgres での GROUP BY - JSON データ型の同等性はありませんか?
マッチ テーブルに次のデータがあります。
テーブル内の最後の個別のチームを名前で選択したいと思います。つまり、次を返すクエリが必要です。
したがって、前回の各チームがテーブルに表示されます。
私は以下を使用しています(ここから):
しかし、これは次を返します:
Postgresには JSON の同等性がないことを理解しています。チームの名前 (文字列) が等しいことだけが必要です。そのチームのプレーヤーを比較する必要はありません。
誰かがこれを行う別の方法を提案できますか?
参考のため:
戻り値:
編集:私はこの質問にキャストしtext
、それに続いて、の代わりに使用しました。これが私の完全なクエリです:DISTINCT ON
GROUP BY
私が上で欲しかったものを返します。誰かがより良い解決策を持っていますか?
sql - 配列とのリレーションをフラットにして、配列エントリごとに 1 つの行を出力する
次のように定義されたテーブルがあるとします。
...そして次の値:
私は返すクエリを見つけようとしています:
arrays へのアクセスに関する上流のドキュメントを確認し、unnest()
関数を使用したソリューションがどのようになるかを考えてみましたが、空になりました。
理想的なソリューションは、展開される配列以外に多数の列があり、主キーがない場合でも簡単に使用できます。複数の配列がある場合の処理は重要ではありません。
sql - テーブルで定義された複数の範囲を持つ列に一致するサブクエリ
住所データベースのかなり一般的なセットアップperson
がありcompany
ます。company
address
すべてかなり正規化されており、使いやすいです。しかし、検索パフォーマンスのために、具体化された、むしろ非正規化されたビューを作成しています。非常に限られた一連の情報と簡単なクエリだけが必要です。結合テーブルを介して通常行われるすべてのことのほとんどが、配列に含まれるようになりました。クエリに応じて、直接検索するか、 経由で結合できますunnest
。
zipcodes
私の列 ( )を補完するものとして、(ドイツ連邦) 州が既に事前計算されている列varchar[]
を追加したいと考えています。これにより、すべての種類の範囲比較を含むようにクエリを変換する必要がなくなります。states
私のマッピング日は次のような表になっています。
各州には複数の範囲があり、範囲が重複する場合があります (1 つの郵便番号が 2 つの異なる州に対応する場合があります)。一部の範囲にはrange_start = range_end
.
今、私はそれを一度に具体化されたビューにする方法について少し頭が痛いです。通常、(トリガーを介して、またはアプリケーション レベルで) 反復的に実行したくなるでしょう。または、5桁について話しているだけなので、範囲を介して行うのではなく、zipを直接州にマッピングする大きなテーブルを作成できます(私の現在のお気に入りですが、何か良い方法があるかどうかを尋ねるほど醜いものです)
上記のようなテーブル(または同様のもの)を使用して、SQLでそれを行う方法はありますか?私はpostgres 9.3で、すべての機能が許可されています...
完全を期すために、郵便番号のサブクエリを次に示します。