2011-06-21 19 views
1

reviews表の内容を考えてみます。結果はReviewDTで注文し、CustomerNameによってグループ化された、などされているSQLiteのクエリ結果行の時間差:How To?

CustomerName ReviewDT 
Doe,John  2011-06-20 10:13:24 
Doe,John  2011-06-20 10:54:45 
Doe,John  2011-06-20 11:36:34 
Doe,Janie  2011-06-20 05:15:12 

SELECT 
    CustomerName, 
    ReviewDT 
FROM 
    Reviews 
WHERE 
    CustomerName NOT NULL 
ORDER BY CustomerName ASC, ReviewDT ASC; 

私は時間差の列を作成したいのですが各Customer ... rowidのこの問合せの各行は元の行を示し、ROWIDなどからの包含へのパターンはありません。

第1ここでは、これは何らかの形で元のクエリの一部として計算できるものです。そうでない場合は、一連の問合せでこれを実行することを計画していました。最初は上記の問合せの結果を選択して新しいTABLEを作成し、次に新しい列を追加するためにALTERINGし、UPDATE/strftimeを使用してrowid-1 (何とか)...

答えて

3

次の1つのReviewDT行からの経過秒を計算する:

SELECT q.CustomerName, q.ReviewDT, 
    coalesce((select r.ReviewDT from Reviews as r 
         where r.CustomerName = q.CustomerName 
         and r.ReviewDT < q.ReviewDT 
         order by r.ReviewDT DESC limit 1), 
         q.ReviewDT) 
FROM Reviews as q WHERE q.CustomerName NOT NULL 
ORDER BY q.CustomerName ASC, q.ReviewDT ASC; 

SELECT q.CustomerName, q.ReviewDT, 
    strftime('%s',q.ReviewDT) 
    - strftime('%s',coalesce((select r.ReviewDT from Reviews as r 
         where r.CustomerName = q.CustomerName 
         and r.ReviewDT < q.ReviewDT 
         order by r.ReviewDT DESC limit 1), 
         q.ReviewDT)) 
    FROM Reviews as q WHERE q.CustomerName NOT NULL 
    ORDER BY q.CustomerName ASC, q.ReviewDT ASC; 

ReviewDTのDTとその先行CustomerName行を取得します

関連する問題