Sqlite 如何查询以获取具有最新时间列值的特定行
下面是我的示例数据,我想获得最新时间的host:value对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 | 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的信息。我指的是窗口函数(分析)。更新您的问题并明确您需要什么。已添加。对不起,把你弄糊涂了。这正是我想要的。非常感谢。请复习下面给出的答案。