1

我很难创建查询来执行以下操作:

我有这张表,叫做LOG:

ID | INSERT_TIME             | LOG_VALUE
----------------------------------------
 1 | 2013-04-29 18:00:00.000 | 160473
 2 | 2013-04-29 21:00:00.000 | 154281
 3 | 2013-04-30 09:00:00.000 | 186552
 4 | 2013-04-30 14:00:00.000 | 173145
 5 | 2013-04-30 14:30:00.000 | 102235
 6 | 2013-05-01 11:00:00.000 | 201541
 7 | 2013-05-01 23:00:00.000 | 195234

我想要做的是构建一个查询,该查询每天返回最后插入的值(使用 INSERT_TIME 的最大值)。我只对该列的日期部分和 LOG_VALUE 列感兴趣。所以,这将是我运行查询后的结果集:

2013-04-29  154281
2013-04-30  102235
2013-05-01  195234

我想我需要在 INSERT_TIME 列上使用 GROUP BY 以及 MAX() 函数,但是这样做,我似乎无法获得 LOG_VALUE。任何人都可以帮助我吗?

(我在 Oracle 10g 上)

4

1 回答 1

2
SELECT trunc(insert_time),
       log_value
  FROM (
    SELECT insert_time,
           log_value,
           rank() over (partition by trunc(insert_time)
                            order by insert_time desc) rnk
      FROM log)
 WHERE rnk = 1

is one option. This uses the analytic function rank to identify the row with the latest insert_time on each day.

于 2013-05-03T00:58:12.847 回答