Oracle -确定并返回具有最高值和的数据的特定小时



我认为我可以使用数组,脚本等更迂回的方式做到这一点…但是,是否有可能将每个"小时"的所有值加起来(汇总)?数据库中给定字段的数据?基本上,我试图确定一天中哪个小时的数据价值最高……最好不要在我想看的每一天循环浏览24次。例如……假设我有一个名为"table"的表,其中包含时间和值列,如下所示:

Time   Value 
00:00  1
00:15  1
00:30  2
00:45  2
01:00  1
01:15  1
01:30  1
01:45  1

如果我手工总结,我会得到下面的

Sum for 00 Hour = 6
Sum for 01 Hour = 4

那么,在这个例子中,00小时将是我的"最大总和"。小时。最后,我想简单地返回哪个小时的总和最高,以及这个值是多少……在这种情况下,其他时间不重要。

这可以在单个ORACLE查询中完成,还是需要在查询之外使用一些脚本和分别处理时间和值?如果不是一个,也许甚至只是获取每小时的总和,我可以运行多个查询-每小时一个?然后将每个小时推入一个数组,然后只使用该数组的最大值?我知道在oracle中有一个SUM()函数,但是如何告诉它"总和所有的小时,只是返回最高和的小时";逃离我。希望这一切都说得通。lol

谢谢你的建议,使这更容易。: -)

下面的查询应该满足您的要求:

SELECT SUBSTR(time, 1, 2) AS HOUR,
SUM(amount) AS TOTAL_AMOUNT
FROM test_data
GROUP BY SUBSTR(time, 1, 2)
ORDER BY TOTAL_AMOUNT DESC
FETCH FIRST ROW WITH TIES;

查询使用SUM函数,但按时间列的小时部分分组。然后按总和降序排列结果,只返回最大值。

下面是显示正在使用的查询的DBFiddle (LINK)

最新更新