Vladeo
@Vladeo
Chudo

Как выбрать последнюю запись по имени и дате?

Есть таблица
id | name | salary | period-start | period-end
1 | Egor | “344” | 2020-08-01 | 2020-08-31
2 | Artur | “567” | 2020-08-01 | 2020-08-31
3 | Egor | “768” | 2020-08-01 | 2020-08-31
4 | Artur | “356” | 2020-08-01 | 2020-08-31
5 | Dima | “864” | 2020-08-01 | 2020-08-31
6 | Dima | “357” | 2020-08-01 | 2020-08-31
7 | Dima | “865” | 2020-08-01 | 2020-08-31

Ожидаемый результат :
Получить последние по “id” записи по каждому имени Egor, Artur, Dima и дате с 2020-08-01 по 2020-08-31

3 | Egor | “768” | 2020-08-01 | 2020-08-31
4 | Artur | “356” | 2020-08-01 | 2020-08-31
7 | Dima | “865” | 2020-08-01 | 2020-08-31
  • Вопрос задан
  • 368 просмотров
Решения вопроса 1
@dzhebrak
Можно в подзапросе найти максимальные идентификаторы для каждого имени, а затем просто выбрать данные по ним:
SELECT *
FROM salary 
WHERE id IN (SELECT MAX(id) FROM salary GROUP BY name);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@x_shader
Oracle & Coffee
SELECT *
FROM
  (SELECT id,
          name,
          salary,
          period-start,
          period-end,
          row_number() OVER (PARTITION BY name ORDER BY id DESC) AS rn
   FROM your_table
   WHERE period-start = ...
     AND period-end = ...)
WHERE rn = 1

Только вместо * надо перечислить нужные поля в реальном запросе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы