同一列 SQLite 中 2 个日期的 DateDiff

DateDiff of 2 dates in the same column SQLite

使用 SQLite,我 table 是这样的:

ClockId          ProjectId           DateTime
-----------------------------------------------------------------
1                1                   1398/01/01 10:00:00
2                1                   1398/01/01 11:00:00
3                2                   1398/01/01 10:00:00
4                2                   1398/01/01 11:00:00
5                1                   1398/01/01 10:00:00
6                1                   1398/01/01 11:00:00
7                1                   1398/01/01 10:00:00
8                2                   1398/01/01 10:00:00
9                1                   1398/01/01 11:00:00
10               2                   1398/01/01 11:00:00

我需要这个输出:

ProjectId            Diff(minute)
------------------------------
1                    180
2                    120

实际上我需要两个这样的连接:

ClockId           ClockId
---------------------------
1                 2
3                 4
5                 6
7                 9
8                 10

我该怎么做?

我在 sql 而不是 SQLite 中尝试此代码:

select
    maintbl2.ProjectId,
    sum(maintbl2.diff) as sum
from (SELECT  
    ROW_NUMBER() OVER(ORDER BY mainTbl.ProjectId) AS Row#,
    mainTbl.ProjectId,
    DATEDIFF(minute, mainTbl.[DateTime], c1.[DateTime]) as diff
FROM [Clock] as c1
CROSS APPLY
        (SELECT TOP 1 * 
            FROM [Clock] as c2
            WHERE c1.ProjectId = c2.ProjectId and c1.DateTime > c2.DateTime
        ) mainTbl) maintbl2

但无法正常工作!!!

经过一番搜索,我找到了答案。

select
        max(project.ProjectId) as ProjectId,
        sum(mainTbl.Diff) as Sum,
    project.Title as Title
    from Project as project 
    left join
    (
     select 
        c1.ProjectId,
        cast(round((julianday(REPLACE(c2.DateTime,'/','-')) - julianday(REPLACE(c1.DateTime,'/','-'))) * 24 * 60 ) as INT) as Diff
     from Clock c1
        left outer join Clock c2 on c1.ProjectId = c2.ProjectId and c1.ClockId <> c2.ClockId and c1.GuidId = c2.GuidId
        where (c1.DateTime < c2.DateTime or c2.DateTime is null)) as mainTbl
        on mainTbl.projectId = project.ProjectId
     group by project.ProjectId