SQL выборка по последнему ID для каждого человека
Есть таблица в которой записывается на каком датчике фиксируются люди и время этой регистрации. Поле ID имеет автоувеличение для каждой следующей записи на 1.
Как можно с помощью поля ID получить последний датчик (ID_SENSOR) для каждого человека (ID_PEOPLE). Пробовал через max(ID) и группировать по ID_PEOPLE, но выдает неправильный результат.
Ответы (2 шт):
Автор решения: DezZzy
→ Ссылка
SQL-запрос:
SELECT id_people, MAX(id_sensor) AS last_id_sensor FROM table_name GROUP BY id_people
Если данный запрос возвращает неправильный результат, то, возможно, имеется проблема в данных или в структуре таблицы
Автор решения: ValNik
→ Ссылка
Так попроще будет
select *
from(
select *
,row_number()over(partition by id_people order by id desc) rn_id
from test
) t
where rn_id=1
Или вариант для упорядочения по времени
select *
from(
select *
,row_number()over(partition by id_people order by s_date desc,s_time desc) rn_time
from test
) t
where rn_time=1
