Я хочу найти самую последнюю покупку для каждого клиента для каждой даты (клиент может совершить несколько покупок в определенную дату, и я хочу получить самую последнюю покупку для этой даты).Мой фрейм данных выглядит примерно так:
Customer_id | Date | Payment | Type
3 '2019-01-28 00:45:00' 128.93 Credit
2 '2019-01-26 01:00:00' 54.36 Debit
3 '2019-01-27 12:00:00' 93.99 Debit
3 '2019-01-28 03:15:00' 164.93 Credit
2 '2019-01-26 17:30:00' 56.74 Credit
2 '2019-01-28 19:15:00' 21.85 Credit
Вывод запроса должен дать мне что-то вроде следующего (я возвращаю одну строку для каждой комбинации клиент / дата и заказ по клиенту / дате.забота о типе - будь то кредит или дебет):
Customer_id | Date | Payment
2 '2019-01-26' 56.74
2 '2019-01-28' 21.85
3 '2019-01-27' 93.99
3 '2019-01-28' 164.93
Вот мой код:
SELECT
R1.Customer_id,
date_trunc('day', R1.Date),
R1.Payment
FROM Records R1
WHERE R1.Date = (SELECT MAX(R2.Date)
FROM Records R2
WHERE R2.Customer_id = R1.Customer_id)
GROUP BY Customer_id, date_trunc('day', R1.Date);
Приведенный мною пример упрощает данные, которыми я являюсьработа с некоторыми условиями фильтрации, но она должна охватывать основную проблему, с которой я сталкиваюсь.Не совсем уверен, что это на правильном пути, но мне кажется недовольным «Группировать по», когда я запускаю запрос.Я новичок в SQL и хотел бы помочь!