0 votes
1 view
in SQL by (22.4k points)

Table:

UserId, Value, Date.

I want to get the UserId, Value for the max(Date) for each UserId. That is, the Value for each UserId that has the latest date. Is there a way to do this simply in SQL? (Preferably Oracle)

Update: Apologies for any ambiguity: I need to get ALL the UserIds. But for each UserId, only that row where that user has the latest date.

1 Answer

0 votes
by (40.3k points)

Use the following code:

select user_id,

       My_Date,

       ...

from

(

select user_id,

       My_Date,

       ...

       max(My_Date) over (partition by user_id) max_My_Date

from   users

)

where My_Date = max_My_Date

The above code will retrieve all rows for which the My_Date column value is equal to the maximum value of My_Date for that user_id.

If the maximum date is on multiple rows then, it’ll retrieve multiple rows for the user_id.

Related questions

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...