Выберите 1 строку на группу на основе нескольких критериев - PullRequest
1 голос
/ 30 марта 2020

Из большого набора данных я пытаюсь выбрать 1 строку для каждого property_id на основе двух критериев

  • first: строка с самым последним recording_date
  • вторая: если самая последняя recording_date используется несколькими записями, возьмите ту, которая имеет наибольшую продажную цену (если есть)

Пример данных выглядит следующим образом, имя таблицы: deeds

id                                   | property_id                          | recording_date | sale_price 
9bf7de90-0b3f-40b0-83bb-9392831a03a3 | 002bb6d2-e064-4eb4-adc2-45713836dfe1 | 2005-12-22     | 535000     
30725c07-b4ab-484b-b09e-30592716340b | 002bb6d2-e064-4eb4-adc2-45713836dfe1 | 2017-09-27     |            
c194b85a-3fb3-46e0-94f0-eeaba1e961e4 | 002bb6d2-e064-4eb4-adc2-45713836dfe1 | 2017-09-27     | 566000     

(я использую Postgres, если это имеет значение)

1 Ответ

2 голосов
/ 30 марта 2020

Использование distinct on:

select distinct on (property_id) t.*
from t
order by property_id, recording_date desc, sales_price desc nulls last
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...