考虑以下reviews
表格内容:
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
结果按ReviewDT
排序,并按CustomerName
分组,例如:
SELECT
CustomerName,
ReviewDT
FROM
Reviews
WHERE
CustomerName NOT NULL
ORDER BY CustomerName ASC, ReviewDT ASC;
我想在每个Customer的每个查询的每一行之间创建一个时间差的列... rowid给出原始行,并且没有从rowid等包含的模式...
对于CustomerName的第一个条目,该值将为0.我在这里要求这可以作为原始查询的一部分以某种方式计算。如果没有,我计划通过一系列查询来做到这一点 - 最初创建一个新的TABLE选择上面的查询结果 - 然后ALTERING添加新列并使用UPDATE / strftime通过使用rowid-1来获取时间差异(以某种方式)...
答案 0 :(得分:3)
计算从ReviewDT
行到下一行的经过的秒数:
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
及其前一行CustomerName
行的DT:
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;