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