代码之家  ›  专栏  ›  技术社区  ›  Marcelo Amoretti

相同id记录的计数时间

  •  0
  • Marcelo Amoretti  · 技术社区  · 6 年前

    有谁能告诉我这个问题吗? 假设我有一个表,其中有多条记录,如下所示:

    +--------------+--+
    | ID room time |  |
    +--------------+--+
    | 1  1 10:00   |  |
    | 2  2 10:01   |  |
    | 3  1 10:01   |  |
    | 4  1 10:02   |  |
    | 5  1 10:03   |  |
    | 6  1 10:04   |  |
    | 7  2 10:02   |  |
    +--------------+--+
    

    我只想在房间1连续的情况下计算它的时间。 此特定表格的结果应为:

    +--------------+
    | id room time |
    +--------------+
    | 1  1 00:03   |
    +--------------+
    

    提前谢谢。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ctznkane525    6 年前

    您可以将一个表与其自身连接起来,以实现以下目的:

    假设表的名称为tbl。 我的查询不会百分之百正确,因为我不知道您的数据类型是什么,但概念是存在的

    A桌的ID必须小于B桌的ID,但必须具有相同的房间。

    C表表示检查不同房间的a和B之间是否没有ID,这就是C.ID为NULL的原因

    SELECT A.ROOM, MAX(B.TIME-A.TIME) FROM tbl A
        INNER JOIN tbl B on A.room=B.room and A.ID<B.ID
        LEFT OUTER JOIN tbl C on A.room<>B.room and A.ID<C.ID and C.ID<B.ID
    WHERE C.ID IS NULL
    GROUP BY a.room