Sqlite 如何查询以获取具有最新时间列值的特定行

Sqlite 如何查询以获取具有最新时间列值的特定行,sqlite,Sqlite,下面是我的示例数据,我想获得最新时间的host:value对 +------+-------+-------+ | HOST | VALUE | TIME | +------+-------+-------+ | A | 100 | 13:40 | | A | 150 | 13:00 | | A | 222 | 13:23 | | B | 210 | 13:55 | | B | 300 | 13:44 | +------+-------+--

下面是我的示例数据,我想获得最新时间的host:value对

+------+-------+-------+
| HOST | VALUE | TIME  |
+------+-------+-------+
|  A   |  100  | 13:40 |
|  A   |  150  | 13:00 |
|  A   |  222  | 13:23 | 
|  B   |  210  | 13:55 |
|  B   |  300  | 13:44 |
+------+-------+-------+
希望仅获取具有每个主机列值的最新时间值的行。 结果应该是: A 150 13:40 B 210 13:55

我认为Oracle中有几种分析功能可以满足这一要求,但我不确定在SQLite中可以做什么


您能告诉我如何进行查询吗?

以下是一种符合ANSI标准的查询方式,应在所有版本的SQLite上运行。对于可能较短的解决方案,请参见@CL的答案

SELECT t1.HOST || '-' || t1.VALUE || '-' || t1.TIME AS HOSTVALUETIME
FROM table t1 INNER JOIN
(
    SELECT HOST, MAX(TIME) AS MAXTIME
    FROM table
    GROUP BY HOST
) t2
ON t1.HOST = t2.HOST AND t1.TIME = t2.MAXTIME
ORDER BY t1.HOST DESC
输出:

+---------------+
| HOSTVALUETIME |
+---------------+
|  A-100-13:50  |
|  B-210-13:55  |
+---------------+

在SQLite 3.7.11或更高版本中,MAX()选择其他列值来自组中的哪一行:

SELECT Host,
       Value,
       MAX(Time)
FROM TheNameOfThisTableIsSoSecretThatICantTellYou
GROUP BY Host;

谢谢但是,我只想获取包含最新时间信息的行,并且它应该基于每个主机。我试着按子句检查WHERE/Group。在Oracle中,有聚合函数,如分区依据或滞后,但我想知道一些有关SQLite的信息。我指的是窗口函数(分析)。更新您的问题并明确您需要什么。已添加。对不起,把你弄糊涂了。这正是我想要的。非常感谢。请复习下面给出的答案。