sql >> データベース >  >> Database Tools >> SSMS

値ごとに2つの連続する行間の最大時間差を取得するにはどうすればよいですか?

    代わりにLAG/LEADを使用できますか?

    SELECT MAX(diff_sec) FROM
    (
      SELECT 
        DATEDIFF(
            SECOND,  
            CreateDT,
            LEAD(CreateDT) OVER(PARTITION BY CODE ORDER BY CreateDT) --next row's createdt
        ) as diff_sec
      FROM Occs
    )x
    

    LEADは、現在の行に対して次のCreateDT(次に、「同じコードを持ち、現在の行のCreateDTの後に時間的に最初に大きいCreateDtを持つ行」によって定義される)を選択します。 DATEDIFFは秒単位で差を取得します(適切な時間枠を選択してください)。ウィンドウ関数LEADはMAX内に表示できないため、サブクエリ(または必要に応じてCTE)でラップする必要があります

    もちろん、特に有用ではないかもしれません。おそらくコードも追加してください:

    SELECT x.code, MAX(x.diff_sec) FROM
    (
      SELECT 
        code,
        DATEDIFF(
            SECOND,  
            CreateDT,
            LEAD(CreateDT) OVER(PARTITION BY CODE ORDER BY CreateDT) --next row's createdt
        ) as diff_sec
      FROM Occs
    )x
    GROUP BY x.code
    



    1. 一部のUPDATEでPHPMyAdminがテキストフィールドを切り捨てるのはなぜですか?

    2. フィールドmysqlから最初の20文字以降の文字を選択する方法

    3. LocalDBをユーザーアクセスから保護する

    4. Mysqlで1つのテーブルから別のテーブルに個別の値のみをコピーする方法は?