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

Pythonを使用して結果セットオブジェクトの2つの連続する行の値を比較する方法

    あなた自身があなたの質問をなんとか解決したけれども、これはウィンドウ関数を使わないそれに対する一つの見解、すなわちlag() またはlead()up_dateの違いを比較するため 自分で参加したままにしておくことができる連続した問題ログのタイムスタンプ。 SQLでは、クエリは次のようになります

    select    ilx.id
    from      issue_logs ilx
    join      rt_status rsx on rsx.id = ilx.to_status
    left join issue_logs ily on  ily.from_status = ilx.to_status
                             and ily.issue_id = ilx.issue_id
    where     ilx.up_date >= '2018-09-06T16:34'
    and       ilx.up_date <= ( coalesce(ily.up_date, '2018-09-14T12:27') -
                               interval '1 minute' * rsx.duration_in_min );
    

    SQLAlchemyでも同じですSQL式言語 :

    from_datetime = '2018-09-06T16:34'
    to_datetime = '2018-09-14T12:27'
    
    ilx = issue_status_logs.alias()
    ily = issue_status_logs.alias()
    rsx = rt_status
    
    query = select([ilx.c.id]).\
        select_from(
            ilx.
            join(rsx, rsx.c.id == ilx.c.to_status).
            outerjoin(ily, and_(ily.c.from_status == ilx.c.to_status,
                                ily.c.issue_id == ilx.c.issue_id))).\
        where(and_(ilx.c.up_date >= from_datetime,
                   ilx.c.up_date <= (func.coalesce(ily.c.up_date, to_datetime) -
                                     cast('1 minute', Interval) *
                                     rsx.c.duration_in_min)))
    


    1. OracleSQLDeveloperのコードウィンドウで変数を使用してSQLコードを実行する

    2. SQL Serverで特定の文字のUnicode値を返す方法– UNICODE()

    3. 実行時にユーザーから入力を取得する方法

    4. Typeorm / Typescriptでリクエストタイムアウトを追加するにはどうすればよいですか?