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

where句のあるSQLウィンドウ関数?

    PostgreSQL 9.5.4を使用してGordonのアプローチを試したところ、不満がありました

    これは、lag()を使用することを意味します FILTERを使用 許可されていません。そこで、max()を使用してGordonのクエリを変更しました 、別のウィンドウフレーム、およびCTE:

    WITH subq AS (
      SELECT
        "user", event, time as event_b_time,
        max(time) FILTER (WHERE event = 'A') OVER (
          PARTITION BY "user"
          ORDER BY time
          ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
        ) AS last_event_a_time
      FROM events
      ORDER BY time
    )
    SELECT
      "user", event_b_time, last_event_a_time
    FROM subq
    WHERE event = 'B';
    

    これがPostgreSQL9.5.4で機能することを確認しました。

    FILTERを提供してくれたGordonに感謝します トリック!



    1. MySQLで日付の平均を作成するにはどうすればよいですか?

    2. マルチテーブル結合で親テーブルを参照するにはどうすればよいですか?

    3. MariaDBでのSYS_GUID()のしくみ

    4. Entity Frameworkを介してOracleデータベースのIDを自動的に生成するにはどうすればよいですか?