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

SQL クエリの前の行の最適化

    SELECT t1.FileName, t1.CreatedDate, t2.CreatedDate as PrevCreatedDate
    FROM 
       (SELECT FileName, CreateDate,
              ROW_NUMBER() OVER(PARTITION BY FileName ORDER BY CreatedDate) AS OrderNo
       FROM MyTable) t1
    LEFT JOIN
       (SELECT FileName, CreateDate,
         ROW_NUMBER() OVER(PARTITION BY FileName ORDER BY CreatedDate) AS OrderNo
         FROM MyTable) t2
    ON (t1.FileName = t2.FileName AND t1.OrderNo = t2.OrderNo - 1)
    

    または、クエリが同一であるため、'WITH' を使用したほうがよい場合があります:

    WITH t(ObjectID, FileName, CreatedDate, OrderNo) AS
       (SELECT ObjectID, FileName, CreatedDate,
              ROW_NUMBER() OVER(PARTITION BY FileName ORDER BY CreatedDate) AS OrderNo
       FROM MyTable) 
    SELECT t1.ObjectID, t1.FileName, t1.CreatedDate, t2.CreatedDate AS PrevCreatedDate,
            DATEDIFF("SS", '1900-01-01 00:00:00', 
               COALESCE((t1.CreatedDate - t2.CreatedDate),0)) AS secondsTaken
    FROM t t1 LEFT JOIN t t2 
    ON (t1.FileName = t2.FileName AND t1.OrderNo = t2.OrderNo + 1)
    


    1. Postgresqlを修正するためにHomebrewのreadlineバージョン6.xに戻りますか?

    2. Ubuntu 10.04 LTS(Lucid)でMySQLリレーショナルデータベースを使用する

    3. OracleでPLSQLを使用してPDFファイルを作成する

    4. 任意のコンピューターからPostgresqlへのアクセスを許可する