sql >> データベース >  >> RDS >> PostgreSQL

条件に基づいて行をフェッチします

    row yには2つの理由があります 返されなかったのは、次の条件によるものです:

    • b.start > a.start 行がそれ自体と結合することは決してないことを意味します
    • GROUP BYは、APP_nmごとに1つのレコードのみを返します。 値ですが、すべての行の値は同じです。

    ただし、クエリにはさらに論理エラーがあり、正常に処理されません。たとえば、「新しい」セッションがいつ開始されるかをどのようにして知ることができますか?

    求めるロジックは、DISTINCT ONを使用して通常のPostgreSQLで実現できます。 関数。特定の列の入力値ごとに1行を表示します。ただし、DISTINCT ON Redshiftではサポートされていません。

    いくつかの潜在的な回避策:Redshiftの機能と同様の特徴

    求める出力は、プログラミング言語(結果をループして変数を格納できる)を使用すると簡単ですが、SQLクエリ(結果の行を操作するように設計されている)に適用するのは困難です。データを抽出し、単純なスクリプト(Pythonなど)で実行して、目的の開始と終了の組み合わせを出力することをお勧めします。

    これは、Hadoopストリーミング関数<の優れたユースケースです。 / a> 、過去に正常に実装しました。レコードを入力として受け取り、開始時刻を「記憶」し、目的のエンドロジックが満たされた場合にのみレコードを出力します。



    1. 初心者向けのSQLNOT演算子

    2. MariaDB CURRENT_ROLE()の説明

    3. データベース内のすべてのテーブルのドロップテーブルステートメントを生成する方法-SQLServer/T-SQLチュートリアルパート48

    4. SQLServerで選択した行を手動で編集する