I have a table like this:
How do i find latest value of each day in oracle with sql?
I try:
select max(datetime), amount
from ORDER_ITEMS
group by datetime, amount
But it does not give a right answer.
You can use ROW_NUMBER() analytic function such as
SELECT datetime, amount
  FROM 
  ( SELECT datetime,
           amount,
           ROW_NUMBER() OVER(PARTITION BY TRUNC(datetime) ORDER BY datetime DESC) AS rn
      FROM order_items)
 WHERE rn = 1
if there might occur ties for datetime values, then prefer using DENSE_RANK() function instead as
SELECT datetime, amount
  FROM 
  ( SELECT datetime,
           amount,
           DENSE_RANK() OVER(PARTITION BY TRUNC(datetime) ORDER BY datetime DESC) AS dr
      FROM order_items)
 WHERE dr = 1
