Выборка min() c группировкой по двум значениям

Необходимо сделать выборку по таблице, содержащей поля user_id(идентификатор объекта события) и logdate (дата и время события). Результирующая таблица должна содержать user_id, столбец даты события (без времени), и столбец минимального времени события за эту дату.

  SELECT Cast(datein AS DATE)
        ,min(datein) mineventT
    FROM "TEST" where user_id = 20467
    GROUP BY Cast(datein AS DATE)

Эта выборка возвращает и группирует по дате для отдельного объекта, но как сгруппировать данные таким образом, чтобы получить минимальное время для каждого объекта за каждый день, где оно существует?


Ответы (1 шт):

Автор решения: АМИР З

Попробуйте воспользоваться оконными функциями, rank к примеру. Скрипт будет примерно такой: Select user_id, cast(datein as date), datein, rank() over(partition by user_id, cast(datein as date) order by datein asc) as my_rank from test Where my_rank = 1;

→ Ссылка