Задать вопрос
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
  • Вопрос задан
  • 426 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
Решения вопроса 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

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

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

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