I have a table like this
datetime | name | value |
---|---|---|
2021-09-22 10:00:01 | Apple | 100 |
2021-09-22 12:02:01 | Apple | 101 |
2021-09-22 12:00:02 | Lemon | 150 |
2021-09-23 18:10:01 | Orange | 10 |
2021-09-23 19:31:02 | Orange | 9 |
2021-09-24 09:00:00 | Apple | 99 |
2021-09-26 00:00:00 | Banan | 15 |
I would like to get the values for each name by max datetime field for this name.
name | value | datetime |
---|---|---|
Apple | 99 | 2021-09-24 09:00:00 |
Banan | 15 | 2021-09-26 00:00:00 |
Orange | 9 | 2021-09-23 19:31:02 |
Lemon | 150 | 2021-09-22 12:00:02 |
CodePudding user response:
Use distinct on
:
select distinct on (name) t.*
from t
order by name, datetime desc;
distinct on
is a convenient Postgres extension that returns the first row for a group -- defined by the keys in parentheses. "First" is based on the order by
clause.
CodePudding user response:
This could help.
select distinct(name), value, datetime from table_name order by name asc, datetime desc;