SQL запрос на фильтрацию дат

Рейтинг: 1Ответов: 2Опубликовано: 30.06.2023
2023-06-22 23:08
2023-06-22 16:42
2023-06-22 11:58
2023-06-21 22:40
2023-06-21 18:00
2023-06-21 14:00

Помогите, пожалуйста, написать запрос к таблице, чтобы из указанных дат, выводились только самые поздние по времени?

2023-06-22 23:08
2023-06-21 22:40

Ответы

▲ 4

В общем случае, если версия СУБД позволяет использовать оконные функции, то примерно так:

SELECT dt
FROM (
    SELECT dt
       , ROW_NUMBER() OVER (PARTITION BY DATE(dt) ORDER BY dt DESC) AS rn
    FROM t
) AS x
WHERE x.rn = 1
▲ 3

Поле datetime в исходной таблице Table1. Ответ точно на поставленный вопрос:

SELECT to_char(MAX(datetime),'YYYY-MM-DD HH:MI') AS Latesttime
FROM Table1
GROUP BY datetime::date;

Результат:

latesttime

2023-06-22 23:08

2023-06-21 22:40

Ну а если нужно больше, то

SELECT *
FROM Table1 INNER JOIN (SELECT MAX(datetime) as Latesttime
    FROM Table1
    GROUP BY datetime::date
) AS LT ON datetime = Latesttime