SQL выборка по последнему ID для каждого человека

Рейтинг: 0Ответов: 2Опубликовано: 05.06.2023

Есть таблица в которой записывается на каком датчике фиксируются люди и время этой регистрации. Поле ID имеет автоувеличение для каждой следующей записи на 1.

введите сюда описание изображения

Как можно с помощью поля ID получить последний датчик (ID_SENSOR) для каждого человека (ID_PEOPLE). Пробовал через max(ID) и группировать по ID_PEOPLE, но выдает неправильный результат.

Ответы

▲ 0Принят

Так попроще будет

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
▲ 0

SQL-запрос:

SELECT id_people, MAX(id_sensor) AS last_id_sensor FROM table_name GROUP BY id_people

Если данный запрос возвращает неправильный результат, то, возможно, имеется проблема в данных или в структуре таблицы