选择这些值SQL的时间戳

时间:2014-07-29 13:28:17

标签: sql oracle

你好,目前我的工作脚本如下。我正在使用oracles 10

SELECT z.ID as "ID_One",
MAX(r.value) as "Max", 
round(MAX(r.value)/80000,2) as "ROUND" 
FROM Table1 r, Table2 z 
WHERE r.timestamp > ((SYSDATE - TO_DATE('01/01/1970 00:00:00', 'MM-DD-YYYY HH24:MI:SS')) * 24 * 60 * 60) - 80000 
AND r.id=21 
AND r.animalid IN ('7','98','3','3') 
AND r.id = z.id group by r.id, r.animalid,z.id;

它生成一个像这样的表

ID_ONE MAX ROUND
1      500 232   
2      232 32  
3      23  .21
4      34  .321

我想从表r中选择一个行调用时间戳。但是,当我将“r.timestamp”添加到我的查询中时,它会生成500行数据而不是4行。看起来它正在为每个时间戳生成最大数字。我如何生成一个看起来像这样的表? fyi timestamp列在unix时间。我可以自己做转换。我只需要知道如何排出这些行。

ID_ONE MAX ROUND   TIMESTAMP
1      500 232     DEC 21,2021 10:00
2      232 32      DEC 21,2021 23:12 
3      23  .21     DEC 31,2021 2:12
4      34  .321    DEC 31,2021 23:12

1 个答案:

答案 0 :(得分:0)

如果您需要来自该行的其他值,则可以使用子查询中的分析函数而不是聚合。有各种各样的方式;这个对原始表中的每一行进行排名,使得每个MAX具有最高value的行排在第一位,然后外部查询只返回那些。

id

SQL Fiddle,包括内部查询,以便您可以看到应用于每一行的排名。