Как из нескольких значений выбрать последнее
Есть таблица с звонками допустим поле некое структурное описание
Первая таблица:
- phone - телефон клиента
- date - Дата звонка
Вторая таблица:
- client_number - телефон клиента
- date - Дата звонка
- result - результат звонка
Необходимо выбрать последний результат звонка по номеру клиента
Исходные данные 1 таблицы:
phone date
891итд| 2021-10-10
891итд| 2021-10-12
Исходные данные 2 таблицы:
client_number date result
891итд| 2021-10-10 |перезвонить
891итд| 2021-10-12| согласен
Ответы (1 шт):
Автор решения: Andrew Nikolaev
→ Ссылка
Если я правильно понял, то нужны результаты последних звонков по всем клиентам. Это так будет выглядеть.
Наполним тестовые данные:
CREATE TABLE UserCalls (client_number VARCHAR(255), call_date DATE, call_result VARCHAR(255));
INSERT INTO UserCalls (client_number, call_date, call_result)
VALUES
('99000010101', '2021-10-10', 'перезвонить'),
('99000010102', '2021-10-11', 'перезвонить'),
('99000010103', '2021-10-12', 'согласен'),
('99000010101', '2021-10-13', 'перезвонить'),
('99000010102', '2021-10-14', 'перезвонить'),
('99000010103', '2021-10-15', 'согласен'),
('99000010101', '2021-10-16', 'согласен'),
('99000010101', '2021-10-17', 'перезвонить'),
('99000010103', '2021-10-18', 'перезвонить'),
('99000010101', '2021-10-19', 'согласен');
Сам запрос:
SELECT
SQ.client_number, SQ.call_date, SQ.call_result
FROM
(
SELECT RANK() OVER ( PARTITION BY uc.client_number ORDER BY uc.call_date DESC ) AS RankRow,
uc.client_number, uc.call_date, uc.call_result
FROM UserCalls uc
) SQ
WHERE SQ.RankRow = 1;