你好,目前我的工作脚本如下。我正在使用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
答案 0 :(得分:0)
如果您需要来自该行的其他值,则可以使用子查询中的分析函数而不是聚合。有各种各样的方式;这个对原始表中的每一行进行排名,使得每个MAX
具有最高value
的行排在第一位,然后外部查询只返回那些。
id
SQL Fiddle,包括内部查询,以便您可以看到应用于每一行的排名。