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
→ Ссылка